spring cloud学习
一、架构
1、单体架构
★什么是单体架构
一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用。
架构单体应用的架构风格,我们称之为单体架构,这是一种比较传统的架构风格。
★单体架构的缺点
a.复杂性逐渐变高
b.部署速度逐渐变慢
c.阻碍技术创新
d.无法按需伸缩
2、架构的演进
★单体架构
★SOA
★微服务
二、微服务
1、定义(Martin Fowler):
简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。
其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。
这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。
这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。
2、特性
★每个微服务可独立运行在自己的进程里;
★一系列独立运行的微服务共同构建起了整个系统;
★每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等;
★微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。
3、优点
★易于开发和维护
★启动较快
★局部修改容易部署
★技术栈不受限
★按需伸缩
★DevOps
4、微服务带来的挑战
★运维要求较高
★分布式的复杂性
★接口调整成本高
★重复劳动
5、设计原则
★单一职责原则
★服务自治原则
★轻量级通信原则
★接口明确原则
6、分布式系统一致性问题
★案例1:下订单和扣库存
★案例2:同步调用超时
★案例3:异步回调超时
★案例4:掉单
★案例5:系统间状态不一致
★案例6:缓存和数据库不一致
★案例7:本地缓存节点间不一致
★案例8:缓存数据结构不一致
...
7、保证最终一致性的模式
★查询模式
★补偿模式
★异步确保模式
★定期校对模式
★可靠消息模式
★缓存一致性模式
8、微服务开发框架
★Spring Cloud:http://projects.spring.io/spring-cloud
★Dubbo:http://dubbo.io
★Dropwizard:http://www.dropwizard.io
★Consl: https://www.consul.io/
★服务发现——Netflix Eureka
★客服端负载均衡——Netflix Ribbon
★断路器——Netflix Hystrix
★服务网关——Netflix Zuul
★分布式配置——Spring Cloud Config
一、架构
1、单体架构
★什么是单体架构
一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用。
架构单体应用的架构风格,我们称之为单体架构,这是一种比较传统的架构风格。
★单体架构的缺点
a.复杂性逐渐变高
b.部署速度逐渐变慢
c.阻碍技术创新
d.无法按需伸缩
2、架构的演进
★单体架构
★SOA
★微服务
二、微服务
1、定义(Martin Fowler):
简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。
其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。
这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。
这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。
2、特性
★每个微服务可独立运行在自己的进程里;
★一系列独立运行的微服务共同构建起了整个系统;
★每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等;
★微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。
3、优点
★易于开发和维护
★启动较快
★局部修改容易部署
★技术栈不受限
★按需伸缩
★DevOps
4、微服务带来的挑战
★运维要求较高
★分布式的复杂性
★接口调整成本高
★重复劳动
5、设计原则
★单一职责原则
★服务自治原则
★轻量级通信原则
★接口明确原则
6、分布式系统一致性问题
★案例1:下订单和扣库存
★案例2:同步调用超时
★案例3:异步回调超时
★案例4:掉单
★案例5:系统间状态不一致
★案例6:缓存和数据库不一致
★案例7:本地缓存节点间不一致
★案例8:缓存数据结构不一致
...
7、保证最终一致性的模式
★查询模式
★补偿模式
★异步确保模式
★定期校对模式
★可靠消息模式
★缓存一致性模式
8、微服务开发框架
★Spring Cloud:http://projects.spring.io/spring-cloud
★Dubbo:http://dubbo.io
★Dropwizard:http://www.dropwizard.io
★Consl: https://www.consul.io/
★Thrift: http://thrift.apache.org/
三、Spring Cloud
1、优势
★产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。
★作为一个微服务治理的全家桶,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。
★采用Spring Boot应用程序提供的集成功能,通过几个简单的注释,开发人员可以快速配置和启用应用程序中的常见功能模块,并使用久经考验的Netflix组件构建大型分布式系统。
★Spring Cloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案。
2、常用组件
★客服端负载均衡——Netflix Ribbon
★断路器——Netflix Hystrix
★服务网关——Netflix Zuul
★分布式配置——Spring Cloud Config