云原生架构相关技术_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)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[BUG历险记] ERROR: [SIM 211-100] CSim failed with errors

问题重现 在开发HLS过程中,我碰到一个奇怪的现象,同样的工程,在我重装完系统后,不能进行C仿真了,但是综合实现都是可以正常运作的。 vitis的报错也非常奇怪,单单一行: ERROR: [SIM 211-100] C…

【Linux系列】深入解析 `kill` 命令:Linux 下的进程管理利器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

chatgpt API扫盲贴

temperature 是什么? 温度(Temperature)是一个介于 0 和 1 之间的值,基本上可以让你控制模型在进行这些预测时的置信度。降低温度(Temperature)意味着它将承担更少的风险,并且完成将更加准确和…

男士内裤哪个品牌好一点?2024热门男士内裤推荐

男人的内裤保质期只取决于被别人看见的次数,如果某条内裤从未被别人看见过,那它永远都是你的新内裤。也就是说,只要穿着破内裤这尴尬的瞬间没被目击,男人就能永远和一条内裤在一起。 实际上如果长时间不更换男士内裤,…

代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)

源代码审计 代码安全测试简介 代码安全测试是从安全的角度对代码进行的安全测试评估。(白盒测试;可看到源代码) 结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷&#xf…

MySQL增删查改初阶

目录 一,数据库操作 1.关键字 show 显示当前数据库有哪些:show databases; 2.创建数据库 3.选中数据库 4.删除数据库 二,表的操作,在选中数据库的基础之上 1.查看表的结构 2.创建表 3.查看当前选中的数据库中…

【算法】模拟算法——Z字形变换(medium)

题解:模拟算法——Z字形变换(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 利用模拟,来解决问题。 首先创建出一个O(numRows*n)的数组来,并按照题目要求把每个字符按顺序填进去。 这里以numRows…

java中回调与Timer类的使用

回调:回调(callback)是一种常见的程序设计模式。在这种模式中,可以指出某个特定事件发生时应该采取的动作。 Timer类:java.swing包中的Timer类,可以使用它在给定的时间间隔时发出通告。如程序中有一个时钟&#xff0c…

如何在IDEA中实现类似Linux命令那样的外部传参

【背景说明】 IDEA中执行一个程序时,如何就在程序一开始执行给传入你给的参数呢? 【说明】 public static void main(String[] args) throws Exception {} 说明:其实java中main方法里的args这个参数,就是用于接收外部传参的。…

redis常见使用场景

文章目录 redis常见使用场景全局ID位统计购物车用户消息时间线timeline抽奖商品筛选分布式锁限流redis实现计数器排行榜消息队列redis 如何实现延时队列 redis生产常用的场景 redis常见使用场景 Redis 是一种高性能的内存数据库,广泛应用于各种场景中。以下是 Redi…

Golang容器:Channel

Channel概念 Channel管道 是Go语言中一种强大的通信机制,它使得在并发运行的goroutines之间可以高效地交换数据。通过Channel管道,goroutines能够: 同步执行:Channel管道可以用来协调并发任务的执行顺序,确保它们在正…

String类型的二维数组怎么写

今天做题遇到一个问题&#xff1a;就是需要写String类型的二维数组时&#xff0c;我蒙圈了。后来查了资料发现&#xff0c;String类型的二维数组其实是由若干个一维数组构成的。 1.先初始化一个二维数组&#xff1a;List<List<String>> list new ArrayList<&g…

centos7.9安装docker

安装docker yum install docker -y 安装 docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-compose mysql docker-com…

基于JAVA+SpringBoot+Vue前后端分离的医院在线挂号预约问诊平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 链接点击直达&#xff1a;下载链接 前言 哈喽兄弟…

前端Vue小兔鲜儿电商项目实战Day05

一、登录 - 整体认识和路由配置 1. 整体认识 登录页面的主要功能就是表单校验和登录退出业务 ①src/views/Login/index.vue <script setup></script><template><div><header class"login-header"><div class"container m-…

springboot 后端文件上传,多文件上传,预览接口开发实现

在Spring Boot中实现文件上传和多文件上传的功能可以通过使用Spring MVC的MultipartFile类来实现。以下是一个简单的示例代码,展示了如何实现文件上传和多文件上传的功能。 首先,创建一个用于处理文件上传请求的Controller类。在该类中,我们需要使用@PostMapping注解来接收…

Gitee的原理及应用详解(四)

本系列文章简介&#xff1a; Gitee是一款开源的代码托管平台&#xff0c;是国内最大的代码托管平台之一。它基于Git版本控制系统&#xff0c;提供了代码托管、项目管理、协作开发、代码审查等功能&#xff0c;方便团队协作和项目管理。Gitee的出现&#xff0c;在国内的开发者社…

Re0:从零开始的C++游戏开发【上】

Re0:从零开始的C游戏开发 这是蒟蒻观看B站upVoidmatrix的课程从零开始的提瓦特幸存者的个人笔记【自用】 前言&#xff1a;采用适用于小白的easyx图形库。 第一集 追着鼠标的小球 #include <graphics.h> #include <iostream> int main(void) {// 初始化initgra…

微信小程序教程DAY3

box标签 第二种方法 绿色第一种 第一种更好 效果一样 完成这个项目 先写循环

Python深度学习基于Tensorflow(13)目标检测实战

文章目录 RPN 整体代码RPN 具体实现过程数据标注读取标注数据固定图片大小调整目标框使用预训练模型获取 feature_shape定义 RPN 网络生成RPN 的 CLS 和 REG 数据集获取所有的锚点计算锚点与目标框的IOU 定义 RPN loss 和 训练过程 参考资料 这里实现的是二阶段目标检测&#x…