TOC
为何采用微服务架构
-
观点1:单块优先,再逐块解耦拆分
-
观点2:微服务优先,因微服务技术已逐渐成熟:灵活性、易扩展
架构设计和技术栈选型
-
总体架构设计
-
Skywalking依赖监控图
-
架构设计思想
- 分而治之
- 单一职责
- 关注分离
-
技术栈选型
- 微服务:Spring/Rest
- 数据访问:Spring Data JPA
- 数据库:MySQL
- WWW服务:Spring MVC + Thymeleaf模版引擎
- Faraday网关:Spring + Servlet Filter
- SPA单页应用:React.js + Redux
- 支持一键部署到本地Docker Compose环境
- 支持一键部署到Kubernetes容器云环境
-
SaaS多租户设计
数据和接口模型设计
-
账户服务
- 账户数据模型
- 账户接口模型
-
公司服务
- 公司数据模型
- 实体关系ER图
- 公司Company服务接口模型
- 公司管理员Admin服务接口模型
- 员工目录Directory服务接口模型
- 团队Team服务接口模型
- 雇员Worker服务接口模型
- 任务Job服务接口模型
- 班次Shift服务接口模型
Dubbo、Spring Cloud和K8s如何选型
-
微服务公共关注点Common Concerns
- DevOps开发者体验
- 微服务
- 配置管理
可变参数配置,如启动期配置数据库连接字符串、运行期动态配置缓存过期时间等
- 服务发现和LB
- 弹性和容错
- API管理
通过API网关对外暴露API,需支持反向路由、安全鉴权、日志监控、限流容错等基本功能,高级网关还需支持AB测试、蓝绿、灰度测试等高级功能
- 服务安全
访问微服务需要认证,对敏感服务还需鉴权,服务间调用也需要权限管控
- 日志监控
集中采集、存储和分析,进一步分析微服务性能和用户行为
- Metrics监控
对服务的调用链、延迟、错误数等等进行监控
- 调用链监控
掌握服务间依赖关系、性能
- 调度和发布
容器云环境,支持容器的资源调度和发布,高级需支持滚动发布、蓝绿发布
- 自愈和自动伸缩
- IaaS (操作系统、虚拟化、硬件/网络/存储)
-
Dubbo、Spring Cloud和K8s横向对比
Dubbo Spring Cloud K8s 服务发现和LB ZK/Nacos + Client Eureka + Ribbon Service API网关 未开源 Zuul Ingress 配置管理 Diamond/Nacos SpringCloud Config ConfigMaps/Secrets 容错限流 Sentinel Hystrix HealthCheck/Probe/ServiceMesh 日志监控 ELK ELK EFK Metrics监控 Dubbo Admin/Monitor Actuator/MicroMeter+Promethues Heapster+Prometheus 调用链监控 NA SpringCloud Sleuth/Zipkin Jaeger/Zipkin 应用打包 Jar/War Uber Jar/War Docker Image/Helm 服务框架 Dubbo RPC Spring REST 框架无关 发布和调度 NA NA Scheduler 自动伸缩和自愈 NA NA Scheduler/AutoScaler 进程隔离 NA NA Docker/Pod 环境管理 NA NA Namespace/Authorization 资源配额 NA NA CPU/Mem Limit,Namespace Quotas 流量治理 ZK+Client NA ServiceMesh -
优劣对比
Dubbo Spring Cloud K8s 亮点 阿里背书成熟稳定RPC高性能流量治理 Netflix/Pivotal背书社区活跃开发体验好抽象组件化好 谷歌背书平台抽象全面覆盖微服务关注点语言栈无关社区活跃 不足 技术较老耦合性高JVM only国外社区小 JVM only运行耗资源 偏DevOps和运维重量复杂技术门槛高 -
实践建议
- 理解微服务关注点,根据企业上下文综合考量
- 尽量不要混搭,保持体系一致性
- 推荐K8s + Spring Boot
- K8s技术门槛和运维成本高,对于中小公司,不建议自建K8s集群,而是采用公有云的K8s,如阿里云的K8s,将K8s的运维外包给公有云
技术中台到底讲什么
-
阿里巴巴中台体系
- 业务前台
- 淘宝
- 天猫
- PC
- …
- 业务中台:共享业务服务层
- 用户中心
- 商品中心
- 交易中心
- …
- 技术中台
- PaaS:技术平台服务,中间件技术、大数据和研发平台
- IaaS:基础设施服务,服务器、机房和互联网数据中心
- 业务前台
-
eBay中台架构
- customer experience
- application platform services
- technology platform
- operations infrastructure layer
-
拍拍贷中台架构
- 业务前台
- 应用:主站、借款、曹操贷、城市贷
- 渠道:第三方接入
- 业务中台
- 核心业务层:用户、资金、借入、借出、风控、催收…
- 技术中台
- 大数据、商业智能:BigDATA、AI
- 基础框架:应用监控、持续交付、中间件、后台服务、容器云
- Infras:计算、存储、网络、监控、安全、IDC
- 业务前台
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
