后端技术栈有哪些
后端技术栈有以下10种:1.负载均衡;2.微服务生态;3.Thrift;4.Consul;5.数据库;6.Strutc;7.Spring;8.Mybatis;9.Shiro;10.Maven。其中,负载均衡帮助调度者合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能优异,提升了服务整体响应速度和系统稳定性。
1.负载均衡
它将流量从外部转发到内部系统,对于同样的请求内容,不同时序的请求会被转发到不同的服务实例上。对每个服务实例而言,它只需要承担系统总流量的 1/N 从而降低了单个服务的负载,提升了服务整体相应速度和系统稳定性。负载均衡器会保持跟踪所有下游服务的状态,如果服务不可用,则会被从调度移除。
一个最常用的负载均衡就是Nignx反向代理。
2.微服务生态
微服务 – 也被称为微服务架构 – 一种将整个后端服务,按照领域、模块分解为若干独立小应用的一种架构方式。微服务有如下特点
服务可以单独编写、发布、测试、部署,相比于所有功能集中于一体的单体服务,可维护性更强
服务彼此之间依赖服务通信的方式松耦合
按照业务领域来组织服务,每个团队维护各自的服务
3.Thrift
Thrift不仅仅是一个轻量的,高性能的远程调用(RPC)通讯协议,也是一个优异的RPC框架。Thrift 使用一种被称为 IDL 的接口定义语言,来定义远程调用的接口。使用官方提供的工具可以将IDL文件生成微服务服务端(Server)和客户端(Client)代码。这里 Server 端指提供服务的一方,而 Client 则指服务调用方,Client 通过 RPC 对 Server进行调用。
利用这份生成的代码,就可以实现Client通过指定IP和端口的调用Server服务了。个人感觉 Thrift 最大的优势是高性能,跨语言,以及足够轻量。跨语言是很好的特性,因为一个大公司的不同部门,可能语言技术栈会有差异,使用 Thrift 可以屏蔽这种差异,让彼此专注。
4.Consul
Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,再执行对应的启动脚本即可。
如果使用 Spring Cloud 或者 Dubbo 等微服务框架,可以通过配置实现使用 Consul 作为服务注册中心,服务启动后,在Consul提供的Web界面就可以查到相应的服务。服务客户端可以在名列前茅次调用服务端前,通过Consul进行服务端实例的查询然后按照查询到的服务实例进行远程调用。
5.数据库
数据有它不同业务特性和使用场景,业务特性很好理解,例如我们不容忍交易数据发生丢失并且在很多操作它的场景,要求强一致性;而用户评论,则能容忍很小比例丢失,并且评论计数器和评论数目之前的如果出现微小差距,用户也很难察觉到;而服务日志数据,则能容忍更大程度的丢失,只要不影响开发Debug可能就不会有人追究。
数据不同的使用场景,也对存储有不同方面的要求。例如同样是用户资料,用户资料查看自己的资料,一定要保证资料是用户最新更新的,并且不能容忍出错,哪怕是页面相应速度略微慢一点;但是在推荐场景作为用户画像作为模型输入的时候,就能容忍这个数据不是最新的,但是要求数据访问速度要高,因为推荐场景往往对成千上万个候选排序,画像数据访问慢则直接拖累了整个推荐系统的效率。
6.Struts
Struts是Apache基金会的一个开源项目,广泛应用于大型互联网企业、政府、金融机构等网站建设,并作为网站开发的底层模板使用。一个是Stuts1 ,一个是Stuts2。技术方面,Stuts1有个核心控制器,但是只提供了一个接口,也就是execute,还要配置action、form之类的,很麻烦,所以依赖性比较强;而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多个action,用起来比较方便,但是因为请求之前的拦截器有一些注入的操作,速度相对Stuts1来说慢一点。
7.Spring
Spring框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的。
Spring以IoC、AOP为主要思想,其中IoC,Inversion of Control 指控制反转或反向控制。在Spring框架中我们通过配置创建类对象,由Spring在运行阶段实例化、组装对象。AOP,Aspect Oriented Programming,面向切面编程,其思想是在执行某些代码前执行另外的代码,使程序更灵活、扩展性更好,可以随便地添加、删除某些功能。Servlet中的Filter便是一种AOP思想的实现。
Spring同时也是一个“一站式”框架,即Spring在JavaEE的三层架构[表现层(Web层)、业务逻辑层(Service层)、数据访问层(DAO层)]中,每一层均提供了不同的解决技术。
8.Mybatis
MyBatis是一款优异的持久层框架,它支持定制化SQL、存储过程以及高级映射。它是轻量级持久层框架,由ibatis演化而来。它自动连接数据库,将数据库的结果集封装到对象中POJO。
Mybatis它是轻量级持久层框架,由ibatis演化而来。它自动连接数据库,将数据库的结果集封装到对象中POJO。
9.Shiro
Apache Shiro是一个开源的轻量级的Java安全框架,它提供身份验证、授权、密码管理以及会话管理等功能。相对于Spring Security, Shiro框架更加直观、易用,同时也能提供健壮的安全性。
Shiro框架相比于Spring Security更加轻量级,但是它也提供了一些基础的,能满足日常开发所需的权限控制功能。
10.Maven
Maven是一个构建工具,这个构建工具能够帮助你更好的管理包的依赖、还能够为你实现项目的热部署、还能为你运行所有的测试用例、还能够为你项目的打包、发布、还能够实现项目的多模块构建。