其实服务化架构已经可以解决大部分企业的需求了,那么我们为什么要研究微服务呢?先说说它们的区别;?
- 微服务架构强调业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外提供服务
- 微服务不再强调传统SOA架构里面比较重的ESB企业服务总线
- 微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。
- 微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用HTTP Rest API的方式来进行
- 微服务的切分粒度会更小
总结:微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。?
为什么考虑Spring Cloud?
- Spring Cloud来源于Spring,质量、稳定性、持续性都可以得到保证
- Spirng Cloud天然支持Spring Boot,更加便于业务落地。
- Spring Cloud发展非常的快,从16年开始接触的时候相关组件版本为1.x,到现在将要发布2.x系列
- Spring Cloud是Java领域最适合做微服务的框架。
- 相比于其它框架,Spring Cloud对微服务周边环境的支持力度最大。
- 对于中小企业来讲,使用门槛较低。
Spring Cloud 是微服务架构的最佳落地方案?
它的特性?
以下为Spring Cloud的核心特性:?
- 分布式/版本化配置
- 服务注册和发现
- 路由
- 服务和服务之间的调用
- 负载均衡
- 断路器
- 分布式消息传递
springcloud常用组件有:
1、服务注册和发现组件Eureka
2、熔断组件Hystrix
3、负载均衡组件Ribbon
4、路由网关Zuul
上述的四个组件都是来自于Netflix公司,通常称为Spring Cloud Netflix
Ribbon简介
负载均衡是把任务分摊到多个单元上执行,缓解压力。常见的负载均衡方式有两种:
- 一种是独立进程单元,通过负载均衡策略,把进程分发到不同的单元上去执行,比如Nginx
- 另一种是把负载均衡的策略以代码的形式封装到服务消费者的客户端上,这个客户端维护了一个服务提供者的信息列表,有了这个列表,通过一定的负载均衡策略吧请求分发到不同的服务提供者上,达到负载均衡的目的。 典型的就是Ribbon。
Ribbon是有Netflix公司开源的组件,用来做负载均衡的,它把负载均衡的逻辑封装在客户端,运行在客户端的进程当中,可以很好地控制HTTP和TCP客户端的负载均衡行为。
在Springcloud构建的微服务系统中,ribbon有两种使用方式: 一种是和RestTemplate结合,另一种是和Feign结合。
Ribbon有很多子模块,经过Netflix公司实际验证的有三个:
- ribbon-loadbalancer,是一个复杂均衡的API,可以独立使用也可以和其他模块一起使用
- ribbon-eureka,可以给负载均衡器提供动态服务java分布式开发涵盖的技术 注册列表的信息
- ribbon-core:Ribbon的可信API
Ribbon工作原理
Ribbon的负载均衡主要是通过LoadBalancerClient来实现,而LoadBalancerClient具体交给了ILoadBalancer处理,IloadBalancer通过配置IRule,IPing等,向EurekaClient获取注册列表信息,默认每隔10秒钟向Eureka发送一侧ping,检查是否需要更新服务的注册列表信息,拿到服务的注册列表信息之后,ILoadBalancer根据IRule中国设置的负载均衡策略(比如轮询、随机等),进行负载均衡操作。
Feign的工作原理
Feign通过处理注解生成Request模板,简化了HTTP API的开发。开发人员可以通过使用注解的方法修改Request API。在发送HTTP Request请求之前,Feign通过注解替换Request模板中的参数,生成真正的Request请求,交给java HTTP客户端去处理。