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

云原生架构相关技术_2.云原生微服务

1.微服务发展背景

         微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些子应用称为“微服务”,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。此外,微服务模式通过分布式架构将应用水平扩展和冗余部署,从根本上解决了单体应用在拓展性和稳定性上存在的先天架构缺陷。但也要注意到微服务模型也面临着分布式系统的典型挑战:如何高效调用远程方法、如何实现可靠的系统容量预估、如何建立负载均衡体系、如何面向松耦合系统进行集成测试、如何面向大规模复杂关联应用的部署与运维。

        在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、可用性与安全性。应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性,降低应用架构的复杂度。云原始的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、可控制性、可容错性等特性。

2.微服务设计约束

         相对与单体应用,微服务架构的架构转变,在提升开发、部署等环节灵活性的同时,也提升了在运维、监控环节的复杂性。设计一个优秀的微服务系统应遵循以下设计约束:

        1)微服务个体约束

         一个设计良好的微服务应用,所完成的功能在业务划分上应是相互独立的。微服务的“微”是按照问题域对单体应用做合理拆分。

        2)微服务与微服务之间的横向关系

         在合理划分好微服务间的边界后,主要从微服务的可发现性和可交互性处理服务间的横向关系。

        3)微服务与数据层之间的纵向约束

         在微服务领域,提倡数据存储隔离(Data Storage Segregation,DSS)原则,即数据是微服务的私有资产,对于该数据的访问都必须通过当前微服务提供的API来访问。

        4)全局视角下的微服务分布式约束        

         从微服务系统设计一开始,就需要考虑以下因素:高效运维整个系统,从技术上要准备全自动化的CI/CD流水线满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。

3.主要微服务技术

         Apache Dubbo作为阿里巴巴的一款开源高性能RPC框架,特性包括基于透明接口的RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。经过数年发展已是国内使用最广泛的微服务框架并构建了强大的生态体系。2018年阿里巴巴陆续开源了Spring Cloud Alibaba(分布式应用框架)、Nacos(注册中心&配置中心)、Sentinel(流控防护)、Seata(分布式事务)、Chaosblade(故障注入),以便让用户享受阿里巴巴十年沉淀的微服务体系,获得简易、高性能、高可用等核心能力。

        Spring Cloud作为开发者的主要微服务选择之一,为开发者提供了分布式系统需要的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话与集群状态管理等能力和开发工具。

        SOFAStack(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。

相关文章:

  • Three.js和Babylon.js,webGL中的对比效果分析!
  • Python驱动下的AI革命:技术赋能与案例解析
  • Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用
  • MS1112驱动开发
  • 查看Hive表的描述信息,包括在HDFS上的Location信息
  • mysql optimizer_switch : 查询优化器优化策略深入解析
  • mysql自带分页
  • 简单聊下服务器防病毒
  • python基础实例
  • 分布式数据库架构:从单实例到分布式,开发人员需及早掌握?
  • Prometheus+Altermanager实现钉钉告警
  • 聚类的外部指标(Purity, ARI, NMI, ACC) 和内部指标(NCC,Entropy,Compactness,Silhouette Index)
  • 变压器绕线完成之后要做的事
  • Jenkins流水线pipeline--基于上一章的工作流程
  • 人工智能安全风险分析及应对策略
  • [译] React v16.8: 含有Hooks的版本
  • 《剑指offer》分解让复杂问题更简单
  • CentOS7 安装JDK
  • CSS魔法堂:Absolute Positioning就这个样
  • Cumulo 的 ClojureScript 模块已经成型
  • express.js的介绍及使用
  • extjs4学习之配置
  • HTML5新特性总结
  • iOS 系统授权开发
  • java8-模拟hadoop
  • Linux Process Manage
  • PHP 7 修改了什么呢 -- 2
  • php中curl和soap方式请求服务超时问题
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 微信小程序填坑清单
  • 我有几个粽子,和一个故事
  • 移动端 h5开发相关内容总结(三)
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (LeetCode) T14. Longest Common Prefix
  • (二)hibernate配置管理
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (六)软件测试分工
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (原)Matlab的svmtrain和svmclassify
  • .aanva
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net 获取url的方法