一丶概念
微服务是一种架构,这种架构是将单个的整体应用程序分割成更小的项目关联的独立的服务。其中每一个小型服务都运行在自己的进程中,并且经常采用HTTP协议进行相互间通信。当然微服务常常跟分布式系统绑定。
什么是分布式系统?
分布式系统:就是一组部署在同一网络下的多个通过网络和通信和协调的组件,对于外部来说就如同一个系统。
二丶微服务开发
框架
微服务开发框架有很多,以下四个最常用:
Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
Dubbo:http://dubbo.io
Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)
Consul、etcd&etc.(微服务的模块)
Spring cloud 为开发人员提供工具,一快速构建分布式系统中的一些常见模式( 配置管理、服务发现、断路器、智能路由、微代理、控制总线等等)。
Spring Cloud 是一个伞形状的项目,由多个子项目组成,主要子项目有:
spring-cloud-nettfilx(最早开源的)
spring-cloud-alibab(阿里巴巴spring-cloud开源)
spring-cloud(官方)
服务调用,即一个服务调用另一个服务,此过程可以分为服务调用者、服务提供者。基本上都会使用注册中心来作为中间件。
实现原理:
spring-aop:创建实现代理类(底层使用的是JDK动态代理)
通过反射注解获取请求方法,请求参数以及返回值。。。
1.引入相关依赖:
2.在调用者的启动类使用注解 @EnableOpenFeign注解激活OpenFeign
3·为调用者创建接口,并在接口上通过注解调用服务:
4·调用者控制层调用接口,实现对数据的获取:
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
1.最小并发数
选择一个最小的并发请求的server
2.轮询
RoundRobin方式轮询选择server
3.响应时间加权
根据响应时间分配一个weight,响应时间越长,weight越小,反之weight越大。
4.随机
随机选择一个server
API Gateway(APIGW / API 网关),是系统对外唯一的入口。API
网关封装了系统内部架构,为每个客户端提供定制的API。 近几年来移动应用与企业间互联需求的兴起。从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。 这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。
路由:网关最基础的部分,路由信息由 ID、目标 URI、一组断言和一组过滤器组成。如果断言 路由为真,则说明请求的 URI 和配置匹配。
断言:Java8 中的断言函数。Spring Cloud Gateway 中的断言函数输入类型是 Spring 5.0 框架中 的 ServerWebExchange。Spring Cloud Gateway 中的断言函数允许开发者去定义匹配来自于 Http Request 中的任 何信息,比如请求头和参数等。
过滤器: 一个标准的 Spring Web Filter。Spring Cloud Gateway 中的 Filter 分为两种类型,分别是 Gateway Filter 和 Global Filter。过滤器将会对请求和响应进行处理。
服务容错为了防止出现服务雪崩效应,降低服务消费者受已失败的服务提供者的影响,服务容错的常见实现模式包括集群容错、服务隔离、服务熔断和服务回退等。
3.4.1常见容错模式:
保证核心服务的稳定性。为了保证核心服务的稳定性,随着访问量的不断增加,需要为系统能够处理的服务数量设置一个极限阀值,超过这个阀值的请求则直接拒绝。
熔断技术可以说是一种“智能化的容错”,当调用满足失败次数,失败比例就会触发熔断器打开,有程序自动切断当前的RPC调用,来防止错误进一步扩大。实现一个熔断器主要是考虑三种模式,关闭,打开,半开。