微服务
什么是微服务
微服务是松耦合的分布式软件服务,这些服务执行少量的定义明确的任务,服务之间通过http和json这样的轻量级通信协议进行数据交换。
为什么使用微服务
1.程序的复杂性上升,单个程序维护不方便,需要与外部服务联系。
2.客户需要更快的交付。
3.更强的性能和横向伸缩(提升单个机器的性能–>多个机器分担服务压力)。
4.程序需要高弹性,某个故障不会影响到整个程序崩溃。
云
1.基础设施即服务(IaaS)(云服务器)
2.平台即服务(PaaS)(github)
3.软件即服务(SaaS)
4.函数即服务(FaaS)
5.容器即服务(CaaS)
微服务考虑主题
1.大小适当—避免微服务承担太多的职责,过小的粒度会导致开发难受。
2.位置透明—如何管理服务之间调用的物理位置细节。
3.有弹性—如何绕过失败的服务(快速失败)。
4.可重复—确保每个相同的服务实例有一样的配置和代码库。
5.可伸缩—利用异步处理和事件来最小化服务之间的依赖 ,可以优雅的扩展服务。
微服务模式
1.核心微服务开发模式:服务粒度,通信协议,接口设计,配置管理,事件处理。
(Spring Boot ,Spring Cloud Config ,Spring Cloud Stream)
2.微服务路由模式:服务发现,服务路由。
(Spring Cloud/Netflix Eureka ,Spring Cloud/Netfilx Zuul)
3.微服务客户端弹性模式:客户端负载均衡,断路器模式,后背模式,舱壁模式。
(Spring Cloud/Netfilx Ribbon ,Spring Cloud/Netfilx hystrix)
4.微服务安全模式:验证,授权,凭据管理和传播。
(Spring Cloud Security/OAuth2/JWT)
5.微服务日志记录和跟踪模式:日志关联,日志聚合,微服务跟踪。
(Spring Cloud Sleuth/Zipkin)
6.微服务构建和部署模式:构建和部署管道,基础设施即代码,不可变服务器,凤凰服务器。
(Docker ,Travis CI)