一个完整的电商项目微服务的实践过程,从选型、业务设计、架构设计到开发过程管理、以及上线运维的完整过程总结与剖析。
纯线上商城
线上线下一体化
跨行业
跨商业模式
不适合采用微服务架构:
应用程序规模小
领域不明确
组织不能做出改变
缺乏理解
团队不成熟
协作问题
引发分布式事务问题
增加大量的重复代码
服务监控
日志的搜集与展示
针对微服务所带来的成本可用通过 K8S 解决
统一的配置问题
增加大量的部署时间
服务注册与发现
负载均衡
服务器成本增加
无状态服务高可用
有状态数据高可用
快速扩容
按量付费
基于 GitLab 和 helm 的 CI/CD
统一配置
服务注册与发现
日志搜集
共享核心库:核心库部署到私有 nuget server,并通过 CI 自动化
共享代码:基于 GitLab CI 发布业务组件到 nuget server
服务模板:grpc server
同步通信:本地调用与 RPC 调用单体部署与分布式部署
异步通信:基于 masstransit 库的 saga
统一认证授权:Ocelot
协作:API 管理,Postman
持续集成:基于 GitLab CI 和 helm CICD 部署到 K8S
未来:分布式事务,Service Mesh 服务网格
微服务架构解放小团队生产力,提高市场响应力
微服务是颗子弹,需要 PaaS 作枪,瞄准的是快速变化的目标