首页 > 数据库 > 数据库开发技术 > 美洽微服务架构演进之道
美洽是做什么的?


2018年前的单体架构:

单体架构的问题:


按领域驱动设计(DDD): 将应用按照业务领域和子域进行划分,每个领域对应一个或多个微服务。
按业务流程: 根据业务流程的不同阶段,将应用拆分成多个微服务。
按功能模块: 按照功能模块(如用户管理、订单处理、支付等)进行拆分。
数据拆分: 将数据按照业务功能进行划分,每个微服务只负责自己领域的数据。
数据库拆分: 将单体数据库拆分成多个数据库,每个数据库对应一个或多个微服务。
事件驱动: 使用事件驱动架构,在数据变更时触发事件,由相关微服务处理。
按技术栈: 将使用不同技术栈的部分拆分成不同的微服务。
按服务类型: 将前端服务、后台服务、数据处理服务等不同类型的服务拆分开。
按团队划分: 根据团队的技能和职责进行划分,每个团队负责一个或多个微服务。
按团队规模: 通过减少团队规模来决定微服务的粒度,一个小团队负责一个微服务。
按性能需求: 根据不同功能的性能需求进行拆分,性能要求高的部分单独拆分成微服务。
按伸缩性: 将需要独立伸缩的部分拆分成单独的微服务。
按部署频率: 根据不同功能的更新频率进行拆分,频繁更新的部分单独拆分成微服务。
按运维复杂度: 将运维复杂度高的部分拆分成单独的微服务,以降低整体运维难度。
按安全需求: 根据不同功能的安全需求进行拆分,安全要求高的部分单独拆分成微服务。
按合规需求: 将需要单独满足合规要求的部分拆分成独立的微服务。
按外部依赖: 根据系统与外部系统的交互进行拆分,依赖外部系统的部分单独拆分成微服务。
按接口和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
监控平台







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