使用一套小服务来开发单个应用的方式,每一个服务运行在独立的进程里,通常采用轻量级的通信机制互联,而且它们能够经过自动化的方式部署。java
一、单一职责
二、轻量级通信
三、隔离性
四、业务数据的独立性(有本身的数据)
五、技术多样性spring
一、互联网行业的快速发展
二、敏捷开发,精溢方法深刻人心
三、容器技术的成熟--使微服务的落地成为可能服务器
一、独立性
二、敏捷性
三、技术栈灵活
四、高效团队框架
一、额外的工做
须要确认如何拆分业务,微服务的拆分粒度
二、数据一致性
三、沟通成本异步
一、从通信模式角度考虑:
一对一?一对多?
同步?异步?
分布式
二、从通信协议角度考虑
REST API
RPC
MQspring-boot
如何选择RPC框架?
一、I/O、线程调试模型
二、序列化方式(JSON/二进制)
三、多语言支持
四、服务治理微服务
经常使用RPC框架:Dubbo/Dubbox(当当)/Thrift(A)/Motan(新浪微博)/gRPC(谷歌)
工具
传统服务的发现
线程
微服务的发现:
一、客户端的发现
二、服务端的发现
服务编排:部署、更新、扩容
流行的服务编排工具:Mesos/Docker Swarm/Kubernetes
Spring Boot的使命:化繁为简
Spring Boot核心功能:独立运行、内嵌Web服务器、简化配置、准生产的应用监控
Spring Boot与微服务的关系:Java的润滑剂
Spring Cloud的使命:简化Java的分布式系统
一系列框架的集合
简化java的分布式系统
Spring Boot 封装
Java的微服务
侧重功能,侧重开发
Spring Cloud核心组件
Netflix Eureka
Netflix Ribbon
Netflix Hystrix
Netflix Zuul
Spring Cloud Config
Spring Boot 意在简化,是一种开发、配置风格 Spring Cloud意在简化分布式,是功能的集合,风格统一