软考 系统架构设计师系列知识点之云原生架构设计理论与实践(14)

接前一篇文章:软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)

所属章节:

第14章. 云原生架构设计理论与实践

          第3节 云原生架构相关技术

14.3.2 云原生微服务

1. 微服务发展背景

2. 微服务设计约束

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

(1)微服务个体约束

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

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

在微服务领域,提倡数据存储隔离(Data Storage Segregation,DSS)原则即数据是微服务的私有资产,对于该数据的访问都必须通过当前微服务提供的API来访问。如若不然,则造成数据层产生耦合,违背了高内聚低耦合的原则。同时,出于性能考虑,通常采取读写分离(CQRS)手段。同样,由于容器调度对底层设施稳定性的不可预知影响,微服务的设计应当尽量遵循无状态设计原则,这意味着上层应用与底层基础设施的解耦,微服务可以自由在不同容器间被调度。对于有数据存取(即有状态)的微服务而言,通常使用计算与存储分离方式,将数据下沉到分布式存储,通过这个方式做到一定程度的无状态化。

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

从微服务设计一开始就需要考虑以下因素:高效运维整个系统,从技术上要准备全自动化的CI/CD流水线,以满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。面对复杂系统,全链路实时多维度的可观测能力成为标配。为了及时、有效地防范各类运维风险,需要从微服务体系多种事件源汇聚并分析相关数据,然后在中心化的监控系统中进行多维度展现。伴随着微服务拆分的持续,故障发现时效性和根因精确性始终是开发运维人员的核心诉求

3. 主要微服务技术

(1)Apache Dubbo

Apache Dubbo作为源自阿里巴巴的一款开源高性能RPC框架,特性包括基于透明接口的RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。经过数年发展,已是国内使用最广泛的微服务框架并构建了强大的生态体系。为了巩固Dubbo生态的整体竞争力,2018年阿里巴巴陆续开源了Spring Cloud Alibaba(分布式应用框架)、Nacos(注册中心、配置中心)、Sentinel(流控防护)、Seata(分布式事务)、Chaosblade(故障注入),以便让用户享受阿里巴巴十年沉淀的微服务体系,获得简单易用、高性能、高可用等核心能力。Dubbo在v3中发展服务网格(ServiceMesh),目前Dubbo协议已经被Enovy支持,数据层选址、负载均衡和服务治理方面的工作还在继续,控制层目前在继续丰富Istio/Pilot-discovery中。

(2)Spring Cloud

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

(3)Eclipse MicroProfile

Eclipse MicroProfile作为Java微服务开发的基础编程模型,其致力于定义企业Java微服务规范。MicroProfile提供指标、API文档、运行状况检查、容错与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括服务网格架构。

(4)Tars

Tars是腾讯将其内部使用的微服务框架TAF(Total Application Framework)多年的实践成果总结而成的开源项目,在腾讯内部有上百个产品使用,服务内部数千名C++、Java、Golang、Node.Js和PHP开发者。Tars包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,理念是让开发者更聚焦业务逻辑,让运维更高效。

(5)SOFAStack

SOFAStack(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。MOSN是SOFAStack的组件,它是一款采用Go语言开发的服务网格数据平面代理,功能和定位类似Enovy,旨在提供分布式、模块化、可观测、智能化的代理能力。MOSN支持Enovy和Istio的API,可以和Istio集成。

(6)DAPR

DAPR(Distributed Application Runtime,分布式应用运行时)是微软新推出的一种可移植的、无服务器的、事件驱动的运行时,它使开发人员可以轻松构建弹性、无状态和有状态微服务,这些服务运行在云和边缘上,并包含多种语言和开发框架。

至此,“14.3.2 云原生微服务”的全部内容就讲解完了。更多内容请看下回。

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

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

相关文章

【Linux】自定义协议+序列化+反序列化

自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞,收藏,关注一下把! 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子,不过这是感性的认识&a…

上海开放大学2024年春《机电一体化系统设计》填空题参考答案

一、填空题 1(10分)机电一体化产品不仅是人的手与肢体的延伸,还是人的()、() 的延伸,具有“智能化”的特征是机电一体化与机械电气化在功能上的本质差别。 参考答案: 填空 一 感官 填空 二 头脑 2(10分)根据不同的使用目的&#xff0c…

在线起诉电信诈骗

原告王某1向本院提出诉讼请求:请求被告返还不当得利款6000元及利息(利息按一年期贷款市场报价利率3.85%的标准计算,从2022年10月2日至实际清偿为止)。本案在审理过程中,原告王某1变更诉讼请求为:请求被告赔…

Kafka入门到实战-第二弹

Kafka入门到实战 Kafka快速开始官网地址Kafka概述Kafka术语Kafka初体验更新计划 Kafka快速开始 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件流…

【SQL Server】2. 将数据导入导出到Excel表格当中

最开始,博主介绍一下自己的环境:SQL Sever 2008 R2 SQL Sever 大致都差不多 1. 通过自带软件的方式 首先找到下载SQL Sever中提供的导入导出工具 如果开始界面没有找到自己下载的路径 C:\Program Files\Microsoft SQL Server\100\DTS\Binn下的DTSWiz…

整理开源资源:零代码开发灵魂——逻辑引擎,收藏吧

逻辑配置是零代码开发的业务核心功能,本质上是实现服务的编排,把原子的服务通过可视化编排,形成最终的业务逻辑。 经过小编的精心整理,把相关的资源全部汇总起来,收藏吧! Drawflow 拖动节点多路输入/输出…

增强Java技能:使用OkHttp下载www.dianping.com信息

在这篇技术文章中,我们将探讨如何使用Java和OkHttp库来下载并解析www.dianping.com上的商家信息。我们的目标是获取商家名称、价格、评分和评论,并将这些数据存储到CSV文件中。此外,我们将使用爬虫代理来绕过任何潜在的IP限制,并实…

python3内置持久化模块shelve心得

python3内置持久化模块shelve心得 来自python官方网站的解释: https://docs.python.org/zh-cn/3.10/library/shelve.html 本文环境: Windows 10 专业版 64 位 Thonny 3.2.6 概述 内置模块 shelve 可以将任意 Python 对象(即 https://docs…

07. 【Android教程】Android 线性布局 LinearLayout

在上一节中,我们讲到了所有的 Layout 都是从 ViewGroup 继承而来,它可以包含若干 View 并按照指定的规则将这个 View 摆放到屏幕上。那么接下来的章节我们就来学习一下 Android 的 UI 布局,Android 原生有六大布局,分别是: Linear…

基于FPGA的HDMI视频接口设计

HDMI介绍 HDMI(High-DefinitionMultimedia Interface)又被称为高清晰度多媒体接口,是首个支持在单线缆上传输,不经过压缩的全数字高清晰度、多声道音频和智能格式与控制命令数据的数字接口。HDMI接口由Silicon Image美国晶像公司倡导,联合索尼、日立、松下、飞利浦、汤姆逊、东…

LLM面面观之MoE

1. 背景 根据本qiang~最新的趋势观察,基于MoE架构的开源大模型越来越多,比如马斯克的Grok-1(314B), Qwen1.5-MoE-A2.7B等,因此想探究一下MoE里面的部分细节。 此文是本qiang~针对大语言模型的MoE的整理,包括原理、流程及部分源码…

Mybatis——查询数据

查询操作 根据用户id查询单条记录,在映射器接口(UserMapper)中定义如下方法: package org.example.mapper;import org.example.demo.User;import java.util.List;public interface UserMapper {//根据id查询UserUser selectUserById(Integer userId); …

对称二叉树_递归_java

对称二叉树 leetcode链接 问题描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内 -100 < Node.val < 100 示例 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;…

stable diffusion 的 GPU 不足怎么解决

稳定扩散&#xff08;stable diffusion&#xff09;是一种用于图像处理和计算机视觉任务的图像滤波算法。 当使用Stable Diffusion过程中遇到GPU显示内存不足的问题时。解决这个问题的方法有以下几种&#xff1a; 目前&#xff0c;对我来说&#xff0c;就最后一点能够暂时解决当…

GaussDB云数据库极简版安装与使用-新手指南

一、前言 作为一款领先的企业级数据库管理系统&#xff0c;GaussDB 提供了强大的性能、高度可靠性和丰富的功能&#xff0c;是企业构建可靠、高性能的数据库解决方案的理想选择。 本文主要针对高校和个人测试环境&#xff0c;介绍极简版安装和使用过程&#xff0c;更加适合高…

python多线程简单示例

Python的多线程可以帮助你在同一个进程中运行多个线程&#xff08;即任务&#xff09;&#xff0c;这样可以在执行IO密集型或高延迟的操作时提高程序的效率。下面是一个简单的Python多线程教程。 1. 引入threading模块 Python的threading模块提供了一个简单的方式来创建和管理…

如何在VSCode中高效使用Git:完全指南

引言 在软件开发领域&#xff0c;版本控制是一个至关重要的概念。它不仅仅是一个程序员的工具&#xff0c;更是团队协作、项目管理和代码质量保证的关键。随着软件开发项目的复杂性不断增加&#xff0c;版本控制系统的作用变得愈发显著。 Git作为目前最流行的分布式版本控制系…

SwiftUI Swift 选择图片 添加图片

1. 添加记帐时添加图片功能 2. Show me the code // // TestPhotoPicker.swift // pandabill // // Created by 朱洪苇 on 2024/3/30. //import SwiftUI import PhotosUI import Foundationstruct TestPhotoPicker: View {State private var selectedItem: PhotosPickerIt…

golang语言系列:SOLID、YAGNI、KISS等设计原则

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要对编程通用技能 SOLID、YAGNI、KISS等设计原则 进行学习 1.SOLID设计原则 S&#xff1a;SRP&#xff0c;单一职责原则O&#xff1a;OCP&#xff0c;开闭原则L&#xff1a;…

PCL拟合并绘制平面和柱面(三)

PCL绘制自定义图形 在使用PCL拟合平面和柱面后&#xff0c;需要绘制自定义大小和位置的平面和柱面以便于可视化。 //拟合类型 enum FitType {FitPlane 1, //平面FitCylinder 2 //圆柱 };主要函数&#xff1a; void PointCloudViewer(PointCloudT::Ptr cloudseg, PointC…