ITPub博客

首页 > 数据库 > 数据库开发技术 > 美洽微服务架构演进之道

美洽微服务架构演进之道

原创 数据库开发技术 作者:greencoatman 时间:2024-06-15 16:50:22 0 删除 编辑

美洽是做什么的?


2018年前的单体架构:

单体架构的问题:

1. 业务功能划分

  • 按领域驱动设计(DDD): 将应用按照业务领域和子域进行划分,每个领域对应一个或多个微服务。

  • 按业务流程: 根据业务流程的不同阶段,将应用拆分成多个微服务。

  • 按功能模块: 按照功能模块(如用户管理、订单处理、支付等)进行拆分。

2. 数据和数据库

  • 数据拆分: 将数据按照业务功能进行划分,每个微服务只负责自己领域的数据。

  • 数据库拆分: 将单体数据库拆分成多个数据库,每个数据库对应一个或多个微服务。

  • 事件驱动: 使用事件驱动架构,在数据变更时触发事件,由相关微服务处理。

3. 技术栈

  • 按技术栈: 将使用不同技术栈的部分拆分成不同的微服务。

  • 按服务类型: 将前端服务、后台服务、数据处理服务等不同类型的服务拆分开。

4. 团队结构

  • 按团队划分: 根据团队的技能和职责进行划分,每个团队负责一个或多个微服务。

  • 按团队规模: 通过减少团队规模来决定微服务的粒度,一个小团队负责一个微服务。

5. 性能和伸缩性

  • 按性能需求: 根据不同功能的性能需求进行拆分,性能要求高的部分单独拆分成微服务。

  • 按伸缩性: 将需要独立伸缩的部分拆分成单独的微服务。

6. 部署和运维

  • 按部署频率: 根据不同功能的更新频率进行拆分,频繁更新的部分单独拆分成微服务。

  • 按运维复杂度: 将运维复杂度高的部分拆分成单独的微服务,以降低整体运维难度。

7. 安全和合规

  • 按安全需求: 根据不同功能的安全需求进行拆分,安全要求高的部分单独拆分成微服务。

  • 按合规需求: 将需要单独满足合规要求的部分拆分成独立的微服务。

8. 跨系统集成

  • 按外部依赖: 根据系统与外部系统的交互进行拆分,依赖外部系统的部分单独拆分成微服务。

  • 按接口和API: 将提供外部接口和API的部分拆分成独立的微服务。


语言选择:


Golang

  • 团队背景

    • 大部分核心成员来自Go/C系

    • 5年以上有GO工程使用经验

  • 优势

    • 比脚本语言工程约束更多,适合多人写作开发

    • 开发效率比Java高

    • 性能比python高

    • 增长势头强

    • 门槛低,易上手

  • 公司发展

    • 创业公司-A轮

    • 业务需求变化快

    • 上线频繁

    • 稳定性要求高

  • 风险

    • 新语言成熟度

    • 团队大规模扩张可能存在招聘风险

    • 不如Java生态全

工程考虑

Devops

  • 工具链

  • CI/CD

  • Docker

  • Supervisor

  • IDE

  • Kubernetes

  • EC2

  • package management


微服务

框架

  • Restful API

  • Protocol

  • Route

  • Log

  • Monitoring

  • GRPC

  • Makefile

  • Code Specification

治理

  • 服务发现

  • 服务配置

  • 熔断

  • 负载均衡 

  • Trace

  • 监控平台


原文作者:二进制跳动;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141127