Appearance
概念
- 简单说就是把一个复杂系统拆除多个互相独立的模块,通过第三方插件进行交互。
- 例如:淘宝有订单模块,用户模块,购物车模块。我们可以把这几个模块,分开部署。
优点
- 独立开发:所有微服务都可以根据各自的功能轻松开发
- 独立部署:根据他们所提供的服务,可以在任何应用中单独部署
- 故障隔离:即时应用中的一个服务不起作用,系统仍然继续运行
- 混合技术栈:可以用不同的语言和技术来构建同一应用程序的不同服务
- 粒度缩放:各个组件可根据需要进行扩展,无需将所有组件融合到一起
缺点
- 增加故障排除挑战
- 由于远程呼叫而增加延迟
- 增加了配置和其他操作的工作量
- 难以保持交易安全
- 艰难地跨越各种便捷跟踪数据
- 难以在服务之间进行编码
微服务有哪些流程
- 服务拆分
- 把现有的业务进行拆分。分成不同模块,独立开发部署。
- 服务注册/发现
- 例如用户服务需要订单服务的订单列表,他怎么找到订单服务呢?那么就需要一个管理各个服务的状态工具,通过工具我能知道有-哪些服务可以调用。
- 常用服务注册工具有Zookeeper、Consul、Nacos、Eureka
- 链路追踪
- 微服务出现问题难以找到问题,需要一个准确的工具知道,用户请求到那个节点,那个服务出现问题。
- 服务监控
- 提前监控,防范于未然。
- 熔断、服务降级、限流