SpringBoot + Kubernetes云原生微服务实践 - (2) 系统架构设计和技术栈选型

系统架构设计和技术栈选型

为何采用微服务架构

  1. 观点1:单块优先,再逐块解耦拆分

  2. 观点2:微服务优先,因微服务技术已逐渐成熟:灵活性、易扩展

架构设计和技术栈选型

  1. 总体架构设计

  2. Skywalking依赖监控图

  3. 架构设计思想

    • 分而治之
    • 单一职责
    • 关注分离
  4. 技术栈选型

    • 微服务:Spring/Rest
    • 数据访问:Spring Data JPA
    • 数据库:MySQL
    • WWW服务:Spring MVC + Thymeleaf模版引擎
    • Faraday网关:Spring + Servlet Filter
    • SPA单页应用:React.js + Redux
    • 支持一键部署到本地Docker Compose环境
    • 支持一键部署到Kubernetes容器云环境
  5. SaaS多租户设计

数据和接口模型设计

  1. 账户服务

    • 账户数据模型
    • 账户接口模型
  2. 公司服务

    • 公司数据模型
    • 实体关系ER图
    • 公司Company服务接口模型
    • 公司管理员Admin服务接口模型
    • 员工目录Directory服务接口模型
    • 团队Team服务接口模型
    • 雇员Worker服务接口模型
    • 任务Job服务接口模型
    • 班次Shift服务接口模型

Dubbo、Spring Cloud和K8s如何选型

  1. 微服务公共关注点Common Concerns

    • DevOps开发者体验
    • 微服务
      • 配置管理

        可变参数配置,如启动期配置数据库连接字符串、运行期动态配置缓存过期时间等

      • 服务发现和LB
      • 弹性和容错
      • API管理

        通过API网关对外暴露API,需支持反向路由、安全鉴权、日志监控、限流容错等基本功能,高级网关还需支持AB测试、蓝绿、灰度测试等高级功能

      • 服务安全

        访问微服务需要认证,对敏感服务还需鉴权,服务间调用也需要权限管控

      • 日志监控

        集中采集、存储和分析,进一步分析微服务性能和用户行为

      • Metrics监控

        对服务的调用链、延迟、错误数等等进行监控

      • 调用链监控

        掌握服务间依赖关系、性能

      • 调度和发布

        容器云环境,支持容器的资源调度和发布,高级需支持滚动发布、蓝绿发布

      • 自愈和自动伸缩
    • IaaS (操作系统、虚拟化、硬件/网络/存储)
  2. 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
  3. 优劣对比

    Dubbo Spring Cloud K8s
    亮点 阿里背书
    成熟稳定
    RPC高性能
    流量治理
    Netflix/Pivotal背书
    社区活跃
    开发体验好
    抽象组件化好
    谷歌背书
    平台抽象
    全面覆盖微服务关注点
    语言栈无关
    社区活跃
    不足 技术较老
    耦合性高
    JVM only
    国外社区小
    JVM only
    运行耗资源
    偏DevOps和运维
    重量复杂
    技术门槛高
  4. 实践建议

    • 理解微服务关注点,根据企业上下文综合考量
    • 尽量不要混搭,保持体系一致性
    • 推荐K8s + Spring Boot
    • K8s技术门槛和运维成本高,对于中小公司,不建议自建K8s集群,而是采用公有云的K8s,如阿里云的K8s,将K8s的运维外包给公有云

技术中台到底讲什么

  1. 阿里巴巴中台体系

    • 业务前台
      • 淘宝
      • 天猫
      • PC
      • ...
    • 业务中台:共享业务服务层
      • 用户中心
      • 商品中心
      • 交易中心
      • ...
    • 技术中台
      • PaaS:技术平台服务,中间件技术、大数据和研发平台
      • IaaS:基础设施服务,服务器、机房和互联网数据中心
  2. eBay中台架构

    • customer experience
    • application platform services
    • technology platform
    • operations infrastructure layer
  3. 拍拍贷中台架构

    • 业务前台
      • 应用:主站、借款、曹操贷、城市贷
      • 渠道:第三方接入
    • 业务中台
      • 核心业务层:用户、资金、借入、借出、风控、催收...
    • 技术中台
      • 大数据、商业智能:BigDATA、AI
      • 基础框架:应用监控、持续交付、中间件、后台服务、容器云
      • Infras:计算、存储、网络、监控、安全、IDC

猜你喜欢

转载自www.cnblogs.com/wnzhong/p/12106796.html