当前位置: 首页 > news >正文

微服务架构设计模式-(16)重构

绞杀者应用程序

  • 由微服务组成的应用程序,将新功能作为服务,并逐步从单体应用中提取服务来实现。
  • 好处
    • 尽早并频繁的体现价值
      • 快速开发交付,使用
        • 与之相对的是“一步到位”重构,这时间长,且期间有新的功能加入,风险极高。
    • 尽可能减少对单体进行修改
      • 可用策略之一:将新服务的数据,同步到单体数据库。双写
  • 策略
    • 将新功能实现为服务
      • 元素
        • API Gateway
          • 新功能请求路由到新服务
        • 集成胶水代码
          • 使服务能够访问单体所拥有的数据,并能够使用单体的功能
    • 隔离表现层和后端
      • 单体的解耦策略
        • 表现逻辑层
          • 处理http请求,生成html页面
        • 业务逻辑层
          • 业务规则
        • 数据访问逻辑层
          • 访问基础服务,如数据库
      • 将应用程序分离
        • 表现层一个服务
        • 业务逻辑层和数据访问层一个服务
    • 通过将功能提取到服务来分解单体
      • 提取服务之前,问问自己这样做有什么好处
      • 服务边界问题
        • 新服务的逻辑需要使用到单体中的类
        • 解决方法
          • DDD聚合,使用主键来代替
            • 比如之间能在一个服务中,直接拿到对象来用,现在变成两个服务,把ID传过去,另一个服务用ID来引用对象(从数据库读取,或请求接口,获取完整对象)
      • 重构数据库
        • 为了避免单体更改,进行双写。客户端迁移完成之后,停止双写
      • 提取哪些服务,何时提取
        • 专注在能够带来最大收益的服务
          • 参考点
            • 加速开发
              • 比如说这块的功能后面几个月会有大量的需求迭代,可以提取出来成一个服务
            • 解决性能、可扩展性或可靠性问题
            • 允许提取其他一些服务
              • 有时候提取一个服务,会简化另一个服务的提取

为什么要重构单体

  • 交付缓慢
  • 充满故障的软件交付
  • 可扩展性差

服务与单体的协作方式

  • 重要问题
    • 维护服务与单体的数据一致性
      • 有时候需要saga来维护
  • 集成胶水
  • 反腐层
    • 两个不同领域模型之间进行转换,防止一个模型的概念污染另一个模型
  • 数据一致性
    • 视情况考虑saga
  • 身份验证和访问授权
    • api gateway
      • API gateway来验证用户身份,然后将用户身份信息放入header之中,请求服务的时候带上,那么服务就不需要验证用户是否登录了,直接从header中获取用户信息
http://www.lryc.cn/news/12061.html

相关文章:

  • 数据结构:归并排序和堆排序
  • 基于easyexcel的MySQL百万级别数据的excel导出功能
  • js-DOM02
  • 作为一名开发工程师,我对 ChatGPT 的一些看法
  • Flask中基于Token的身份认证
  • 波奇学数据结构:时间复杂度和空间复杂度
  • 移动OA办公系统为企业带来便捷办公
  • 什么是Type-c口?Type-c口有什么优势?
  • Go开发者常犯的错误,及使用技巧 (1)
  • Servlet 作业
  • Hive高阶函数:explode函数、Lateral View侧视图、聚合函数、增强聚合
  • 信息系统服务管理
  • Windows10 安装ElasticStack8.6.1
  • gRPC 非官方教程
  • 6.2【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络
  • 软件工程复习
  • 将Nginx 核心知识点扒了个底朝天(二)
  • 【PowerQuery】PowerBI 的PowerQuery支持的数据集成
  • scipy spatial transform Rotation库的源代码
  • JAVA文件操作
  • 字符串匹配 - 模式预处理:BM 算法 (Boyer-Moore)
  • RV1126笔记三十:freetype显示矢量字体
  • polkit pkexec 本地提权漏洞修复方案
  • es-06聚合查询
  • 面试知识点准备与总结——(并发篇)
  • Django框架之模型视图-URLconf
  • 操作系统闲谈06——进程管理
  • DaVinci 偏好设置:用户 - UI 设置
  • Nacos超简单-管理配置文件
  • 基于微信小程序的中国各地美食推荐平台小程序