Spring Cloud / Alibaba 微服务架构 | 2021年11月更文挑战(2)

422 阅读2分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

微服务架构的优势

1、对于每个单一的微服务,都可以选择自己擅长的语言去开发,扩展性强

即使微服务的架构是java的,仍然可以使用python、go等语言去实现单个微服务。因为服务与服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的Restful API)。

2、对于整个应用而言,代码不再耦合,不会出现大量的冲突

3、微服务可以重用,应用发布时间可控性更强

4、通过故障隔离,让错误中微服务中降级,不会影响到整个应用或其他服务。

采用熔断降级的形式,将错误和流量限制在单个微服务的内部,不向下继续传播。

微服务架构需要遵循的原则

1、职责独立

每个微服务只做自己功能范围内的事,不同的微服务中业务功能上不应该存在交叉,否则需要修改微服务的功能实现划分。

即使每个微服务的功能是独立的,但是对于客户端的请求仍然可能需要多个微服务之间共同启动响应,这就是微服务之间的依赖链,微服务之间的依赖链不要“过长”,单个微服务的依赖链路最好不要超过3。

2、使用熔断器实现快速的故障容错和线程隔离

例如Hystrix、Sentinel。

3、通过网关代理微服务请求

可以用Gateway、Zuul这样的组件来实现网关。

网关是微服务架构对外暴露的唯一入口,这样整个系统的入口只有一个,方便客户端的同时也方便我们去统一处理流量控制、请求过滤等。

本电商项目是用Gateway来实现服务网关,拥有高性能的同时还能实现网关层面的流量并发控制。

4、确保微服务API变更后能够向后兼容

每个API接口的修改都要慎重,做好兼容,提供默认参数等等。

电商项目微服务模块拆分

网关鉴权: 用户访问 --〉E-commerce-gateway(路由配置限流配置、过滤器 ) --〉E-commerce-authority(基于JWT实现,登录、注册)

四大功能微服务模块(E-commerce-service): 账户 (E-commerce-account)、商品 (E-commerce-goods)、订单 (E-commerce-order)、物流 (E-commerce-logistics)

大致功能

用户:

  • 注册/登录电商App

电商App:

  • 用户账户服务 --〉地址信息+余额信息
  • 商品服务 --〉商品信息+创建商品
  • 订单服务 --〉订单信息+创建订单
  • 物流服务 --〉物流单

下一篇将正式开始搭建该电商项目。