微服务架构设计核心理论:掌握微服务设计精髓

文章目录

  • 一、微服务与服务治理
    • 1、概述
    • 2、Two Pizza原则和微服务团队
    • 3、主链路规划
    • 4、服务治理和微服务生命周期
    • 5、微服务架构的网络层搭建
    • 6、微服务架构的部署结构
    • 7、面试题
  • 二、配置中心
    • 1、为什么要配置中心
    • 2、配置中心高可用思考
  • 三、服务监控
    • 1、业务埋点的技术选型
    • 2、用户行为分析(用户画像)
    • 3、通用埋点手段
    • 4、离群点分析
  • 四、调用链梳理
    • 1、微服务链路梳理

一、微服务与服务治理

1、概述

单体应用时代,全都耦合在一起,牵一发而动全身。所有功能一起上线一起回滚。代码复杂度混乱。

微服务时代,业务模式糙快猛,敏捷编程。小步快跑,独立演进,独立部署,快速迭代。团队赋能(每个微服务有各自团队)。边界清晰,以大化小-服务拆分,三高应用-分治。

2、Two Pizza原则和微服务团队

Two Pizza原则:如果一个团队的成员,两个披萨都喂不饱他们,说明团队明显太大了 。

“大象不会跳舞” - 提倡小团队。
小团队:沟通成本低,小步快跑容易实现。(人数不会超过10个)

在微服务和敏捷的理念之下,通常是重沟通请问当,因此团队中的每个人都需要做到深度参与。

测试人员也是有很强的开发功底,会致力于测试框架的搭建。

3、主链路规划

要保障业务的最小可用性。(比如:电商的下单场景、社交的点对点消息)

主链路规划就是将有限的资源用在最核心的链路上。
根据应用的水位,进行弹性计算,确保主链路的可用性。自动/手动进行降级熔断、分段限流。

4、服务治理和微服务生命周期

远程RPC调用,A服务是如何知道B服务服务器地址的呢?B有多台服务器,A是如何从集群中选择B服务呢?B服务上下线是如何让A服务知道的呢?

总的来说,服务治理就是维护一个可用的服务列表(注册中心),并且体现服务的状态。
在这里插入图片描述

服务注册:每个微服务上线之后,会主动在注册中心上注册自己的IP、名称等信息。
服务发现:每个微服务都会从注册中心主动拉取所有在该注册中心上注册的服务信息。
服务续约(心跳):每个微服务与注册中心每隔几秒发送心跳包,确保自己处于正常状态。
服务剔除:注册中心每隔一段时间进行批处理,这段时间内没收到心跳包的微服务会从注册中心剔除。
服务下线:微服务主动从注册中心剔除掉。
在这里插入图片描述

5、微服务架构的网络层搭建

通常来说,Unsecure Zone是可以对用户暴露的,用户可以直接访问的;Secure Zone只内部访问。
而且每个小的微服务,还会做集群部署。
在这里插入图片描述

6、微服务架构的部署结构

将每个微服务打包成docker镜像,部署在同一个物理机上,使用kubernetes进行快速部署。
在这里插入图片描述

7、面试题

问:高并发系统、资源有限、如何来保障业务顺利进行?
答:主链路规划!由面到点。业务角度规划主链路 - 流量、转化率、变现场景;漏斗模型 - 越往下越重要。
答:具体技术点:限流降级,弹性计算。

问:谈谈服务治理
答:本质是维护可用服务列表,保持服务间调用的正确性。
答:服务治理的生命周期(服务注册、服务发现、服务剔除、服务续约、服务下线)。

二、配置中心

1、为什么要配置中心

配置中心可以将配置统一管理,有配置变化可以实时推送到相关的微服务。

实现:
配置业务隔离(将具体配置文件从业务代码中抽离,放在中心化的配置中心);
环境隔离(业务代码层并不需要关心当前部署的环境,在配置中心做配置隔离,业务代码启动时根据启动参数决定使用哪个环境的配置);
服务隔离(中心化的配置服务,有能力识别那些配置文件属于哪些服务)。

2、配置中心高可用思考

解决单点故障问题,就需要做集群(多副本、主从、集群)。
单点故障解决方案:通过注册中心,将配置中心注册为一个微服务。来实现高可用。

配置文件本地保存一个备份,确保远程配置数据读取不到导致宕机。

总而言之,高可用的原则就是认为任何一环都不可靠,通过各种方式来提高总体的可用性。

三、服务监控

1、业务埋点的技术选型

通过业务日志,进行业务买点的处理,用于内审、统计、线上预警。

内审:后台系统、商户关键操作(银行卡、关户、密码)的关键操作都记录下来,用于内部审计。(海量数据,可查找,长期保存)
记录下来之后,根据操作员/操作资源维度进行操作查找。查出问题进行追责。
也就是说,审计数据只需要根据key来查询想要的操作记录即可,可以考虑使用CouchBase或者MongoDB等文档数据库。

线上预警:基于文件业务日志记录的,通过日志关键信息来监控关键业务流程、关键指标。
技术选型:fileBeat(收集log文件),Kafka(日志收集及分发),Logstash(日志收集、转换)、elasticSearch(存储、查询)、Kibana(图形化界面)。

2、用户行为分析(用户画像)

从个人行为数据上,分析出个人特点,从而进行一些精准推送。
在这里插入图片描述
日志关键信息:操作时间;页面元素;匿名/登录用户;做了什么操作。(时间、地点、人物、事件,按需记录)

3、通用埋点手段

一般就是这三种手段:后端业务埋点、前端可视化埋点、无痕埋点。

后端业务埋点:在后端代码中,进行日志打印。
可以用侵入性比较高的,手动打印日志(代码侵入高、信息完整度高、精准度高)。也可以使用AOP注解,进行统一日志(代码侵入低,信息完整度较低,精准度较低)。

前端可视化埋点/声明式埋点:使用前端的一些控件/按钮进行埋点。
比如按钮点击,触发响应函数,判断埋点开关是否开启,若开启就执行埋点函数(异步)。
对比后端业务埋点:埋点前置,降低业务侵入,降低成本。
缺点:APP更改埋点逻辑就得重新发版更新,比较麻烦。

无痕埋点:无差别记录用户行为(所有行为),异步发送后台。
记录业务事件(控件事件),需要在前端框架层面,为每个控件定义一个业务事件(每个控件要对应好业务)。
还需要后端可配(比如说APP更改埋点逻辑,只需要读取后端配置即可)。
还需要注意数据传递,前后数据关联(获取前一步操作内容),所以说无痕埋点保存数据时,还需要携带前一个页面的相关数据。
特点:埋点成本低,但是数据清洗难度高。

通常来说使用无痕埋点+可视化埋点,进行数据分析。
后端业务埋点记录关键链路。
综合使用。

4、离群点分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、调用链梳理

1、微服务链路梳理

微服务调用链路长,出问题之后需要找到问题的根源点。

通过报错日志,找到全局的TraceID,然后定位整条调用链路。
在这里插入图片描述
常用解决方案:ZipKin、skywalking。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Burp Suite如何拦截站点请求

Burp Suite是一款强大的Web渗透测试工具,可以用于拦截、修改和分析Web应用程序的请求和响应。要使用Burp Suite拦截站点请求有两个方案。我会倾向选用方案二,因为它不会影响本地电脑代理配置。 1. 方案一 安装Burp Suite:首先,您…

【C语言】ipoib驱动 - ipoib_cm_post_receive_nonsrq_rss函数

一、ipoib_cm_post_receive_nonsrq_rss函数定义 static int ipoib_cm_post_receive_nonsrq_rss(struct net_device *dev,struct ipoib_cm_rx *rx, int id) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_recv_ring *recv_ring priv->recv_ring rx->ind…

提升开发效率的google插件

在如今的软件开发领域,Google Chrome浏览器的开发者插件扮演着至关重要的角色,为开发人员提供了丰富的工具和功能,从而提高了开发效率。下面介绍几款强大的 Google 插件,它们在不同方面为开发者提供了便利,并能显著提升…

力扣每日一题--2088. 统计农场中肥沃金字塔的数目

看到这道题有些人很容易放弃,其实这道题不是很难,主要是题目长,读的容易让人放弃,但是 只要抓住一些性质就可以解决该问题。 本题中的定义放到图像里其实就是个金字塔,下层的那部分比上一层的那部分,长度加…

51单片机HC-SR04超声波测距lcd1602显示(程序+ad硬件设计+文档说明)

本帖主控使用STC89C52单片机,超声波测距采用HC-SR04模块,包含ad硬件设计和文档。 测距原理 超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距SCt/2,式中的C为超声波波速。由于超声…

【GitHub】如何删除GitHub仓库里的文件夹(区分 rm/git rm)

删除GitHub仓库里的一个文件夹 1、复制仓库地址2、在本地新建一个空文件夹3、在空文件夹内,右键选择Git Bash Here4、弹出GIT Bash框5、克隆远程仓库6、拉取远程仓库7、查看仓库里的文件8、选择想要删除的文件夹进行删除9、提交删除说明10、更新GitHub远程仓库 在gi…

微信小程序-----wxss模版样式

目录 前言 一、WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 二、rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算 三、样式导入 1. 什么是样式导入 2. import 的语法格式 四、全局样式和局部样式 1. 全局样式 2. 局部样式 前言 上一期…

伪装目标检测模型论文阅读之:Zoom in and out

论文链接:https://arxiv.org/abs/2203.02688 代码;https://github.com/lartpang/zoomnet 1.摘要 最近提出的遮挡对象检测(COD)试图分割视觉上与其周围环境融合的对象,这在现实场景中是非常复杂和困难的。除了与它们的背景具有高…

漏洞复现-金和OA jc6/servlet/Upload接口任意文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

【RT-DETR有效改进】ShapeIoU、InnerShapeIoU关注边界框本身的IoU(包含二次创新)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

【Linux】Linux系统编程——pwd命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 pwd(Print Working Directory)命令用于显示用户当前工作目录的完整路径。这是一个常用的命令,帮助用户确定他们目前所在的目录位置。 2.命令格式 基本的 pwd 命令…

基于Redis+Lua的分布式限流

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。 前面我们了解了如何利用Nginx做网关层限流&#xf…

2024年AMC8历年真题练一练和答案详解(9),以及全真模拟题

“熟读唐诗三百首,不会作诗也会吟”,反复做真题、吃透真题、查漏补缺并举一反三是在各类考试、比赛中得高分的重要学习方法之一,参加AMC8竞赛也是如此。 六分成长继续为您分享AMC8历年真题,最后几天,通过高质量的真题来体会快速思…

爬虫-8-数据存储-mysql

#mysql占空间最小吧,数据存储没问题吧 (//∇//)

23111 网络编程 day2

思维导图 重打代码 #include<myhead.h> #define SER_IP "192.168.122.150" //服务器ip #define SER_PORT 8888 //服务器端口int main(int argc, const char *argv[]) {//1.创建用于连接的套接字int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror("…

压缩编码之JPEG变换编码不同压缩率的模拟的实现——数字图像处理

原理 离散余弦变换&#xff08;DCT&#xff09;和量化是图像压缩中的两个关键步骤&#xff0c;尤其是在JPEG压缩标准中。 离散余弦变换&#xff08;DCT&#xff09;&#xff1a;DCT的目的是将图像从空间域&#xff08;即像素表示&#xff09;转换到频率域。这种转换后&#x…

dp--62. 不同路径/medium 理解度A

62. 不同路径 1、题目2、题目分析3、复杂度最优解代码示例4、抽象与扩展 1、题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中…

利用Python的csv(CSV)库读取csv文件并取出某个单元格的内容的学习过程

csv库在python3中是自带的。 利用它可以方便的进行csv文件内容的读取。 注意&#xff1a;要以gbk的编码形式打开&#xff0c;因为WPS的csv文件默认是gbk编码&#xff0c;而不是utf-8。 01-读取表头并在打印每一行内容时一并输出表头 表头为第1行&#xff0c;现在要读取并打…

【GaussDB数据库】序

参考链接&#xff1a;国产数据库华为高斯数据库&#xff08;GaussDB&#xff09;功能与特点总结 GaussDB简介 官方网站&#xff1a;云数据库GaussDB GaussDB是华为自主创新研发的分布式关系型数据库。该产品支持分布式事务&#xff0c;同城跨AZ部署&#xff0c;数据0丢失&#…

IOC之Spring统一资源加载策略

前言 在学 Java的时候&#xff0c;我们学习了一个标准类 java.net.URL&#xff0c;该类在 Java SE 中的定位为统一资源定位器&#xff08;Uniform Resource Locator&#xff09;&#xff0c;但是我们知道它的实现基本只限于网络形式发布的资源的查找和定位。然而&#xff0c;实…