前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务划分的思考

微服务划分的思考

作者头像
用户2146693
发布2021-12-28 10:43:09
4290
发布2021-12-28 10:43:09
举报
文章被收录于专栏:架构师进阶

为什么

微服务不是十全十美的,不是银弹,是什么原因导致必须要做微服务划分,是否有足够的动机支撑,是项目需要,还是领导的想法,公司层面是否有相应的规划。

拆分后的服务谁来维护,研发同学是否愿意参与

为什么,思考清楚了,接下来看还需要考虑怎么做

单体应用的不足

  1. 随着时间推移逐渐变大,难以维护。
  2. 降低开发速度,应用越大,启动时间越长。
  3. 不同模块发生资源冲突时,扩展困难。密集计算型模块与密集I/O型模块资源冲突。
  4. 可靠性难以保障,任何一个模块的bug都有可能拖垮整个服务
  5. 采用新架构或者新技术非常困难

以上是单体服务面临的一些问题,但是不止于此。

微服务优点

微服务的核心价值在于以下几点:

  1. 粒度小,单个服务可以紧贴业务快速迭代;
  2. 去中心化组织和部署结构,减少不必要的协同;
  3. 数据和商业逻辑受同一个服务控制,从而在商业逻辑快速变更的同时,保障数据模型的一致性;
  4. 数据和状态独立封装,保障一个业务快速演变的同时,还不污染其他业务;
  5. 服务本身的独立部署能力使得容错和容量弹性最大化;
  6. 细粒度服务发布回滚和故障响应能够有效隔离,出了问题可以迅速降级或回滚。

微服务缺点

  1. 微服务应用是分布式部署,需要考虑服务间的协作通信
  2. 微服务的数据库是分区的,需要考虑数据一致性问题,强一致性的场景,还需要引入三方解决方案,推荐最终一致性。
  3. 测试一个基于微服务架构的应用也是很复杂的任务,需要启动所有相关联的服务
  4. 微服务架构模式应用的改变将会波及多个服务。一个小需求,可能需要修改A、B、C三个服务。

划分粒度

划分微服务的粒度不仅需要考虑研发资源,还要考虑服务本身的原子性、团队大小、团队人员的稳定性、服务的高可靠性要求等等。

参考阿里的粒度:人均服务数是 1.5 个左右,建议维护一个核心服务+变更较少的服务。

划分原则

  1. 横向划分
  • 基础工具类
  • 通用服务能力
    • 独立jar
    • starter封装
  • 上下游解耦
  1. 纵向划分
  • 业务维度
  • 基础设施模块
    • MQ
    • 缓存层

衡量指标

  1. 稳定性
  2. 性能
  3. 可扩展性
  4. 可维护性

改造成本

微服务改造是持续迭代的工程,需要考虑:

  1. 机器资源,包括部署主机、数据库
  2. 运维资源,大量微服务依赖自动化部署
  3. 研发资源,需要投入研发资源迭代新需求
  4. 基础设施的支持能力
  5. 沟通成本,部分需求带来的服务间协作
  6. 数据迁移成本,老数据迁移问题
  7. 原有组织或者研发变更成本

微服务基础设施

常用的一些微服务基础设施有:

  1. 注册中心
  2. 服务间通信
  3. 熔断降级
  4. 负载均衡
  5. 配置中心
  6. 定时任务
  7. 服务监控&告警
  8. 服务间链路追踪
  9. 日志平台
  10. CI/CD
  11. 自动化测试平台

关于技术选型:

  • 【1-6】一般考虑Springcloud全家桶
  • 【7】一般是Prometheus+grafana,
  • 【8】一般考虑Skywalking
  • 【9】一般是ELK
  • 【10】一般是自建或基于开源方案二次改造
  • 【11】一般自建

选型方案,最终都需要综合考虑,比如研发人员的熟悉程度,是否有足够的研发资源和价值去自研。

也可以直接上云,现在的云服务厂商基础设施都很完善。

参考

Introduction to Microservices

Microservices in Production

Microservices AntiPatterns and Pitfall

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么
  • 单体应用的不足
  • 微服务优点
  • 微服务缺点
  • 划分粒度
  • 划分原则
  • 衡量指标
  • 改造成本
  • 微服务基础设施
  • 参考
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档