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

这篇具有很好参考价值的文章主要介绍了微服务架构设计核心理论:掌握微服务设计精髓。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、微服务与服务治理

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。文章来源地址https://www.toymoban.com/news/detail-797725.html

到了这里,关于微服务架构设计核心理论:掌握微服务设计精髓的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【新版系统架构】第十五章-面向服务架构设计理论与实践

    软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版) 第一章-绪论 第二章-计算机系统基础知识(一) 第二章-计算机系统基础知识(二) 第三章-信息系统基础知识 第四章-信息安全技术基础知识 第五章-软件工程基础知识(一) 第五章-软件工程基础知识(需求工

    2024年02月16日
    浏览(43)
  • 1. Tomcat整体架构及其设计精髓分析

    本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 1.Servlet规范的设计理念分析 2.如何理解Tomcat=Http服务器+Servlet容器 3.结合server.xml理解Tomcat整体架构 4.连接器Connector的设计思路分析 5.适配器和模板方法模式在Tomcat中的应用 6.Tomcat多层容

    2024年02月06日
    浏览(37)
  • 一篇文章掌握负载均衡Ribbon作用和架构以及核心组件

    目录 1、Ribbon是什么 2、Ribbon的作用 1.集中式LB 2.进程式LB 3、Ribbon负载均衡架构 总结: 4、Ribbon核心组件IRule Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端负载均衡的工具 。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是 提供客户端的软件负载均衡算法,将 NetFl

    2024年01月19日
    浏览(49)
  • C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓

    您已经知道 C++ 支持数学中的常见逻辑条件: 小于: a b 小于或等于: a = b 大于: a b 大于或等于: a = b 等于: a == b 不等于: a != b 您可以使用这些条件来针对不同的决定执行不同的操作。 C++ 具有以下条件语句: 使用 if 来指定一个代码块,如果指定的条件为 true,则执行该

    2024年04月08日
    浏览(51)
  • 系统架构设计高级技能 · 安全架构设计理论与实践

    点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 威胁可以来源于物理环境、通信链路、网络系统、操作系统、应用系统、管理系统。 网络与信息安全风险类别可分为

    2024年02月11日
    浏览(45)
  • 阿里技术官亲笔:Kafka限量笔记,一本书掌握Kafka的精髓

    分布式,堪称程序员江湖中的一把利器,无论面试还是职场,皆是不可或缺的技能。而Kafka,这款分布式发布订阅消息队列的璀璨明珠,其魅力之强大,无与伦比。对于Kafka的奥秘,我们仍需继续探索。 要论对Kafka的熟悉程度,恐怕阿里的大佬们最有话语权。今天,我们有幸分

    2024年01月22日
    浏览(52)
  • 系统架构设计高级技能 · 大数据架构设计理论与实践

    系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】 现在的一切都是为

    2024年02月11日
    浏览(44)
  • 系统架构设计高级技能 · 层次式架构设计理论与实践

    现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这

    2024年02月10日
    浏览(52)
  • 系统架构设计高级技能 · 云原生架构设计理论与实践

    系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】 现在的一切都是为

    2024年02月11日
    浏览(48)
  • 【Spring】学习Spring需要掌握的核心设计思想

    目录 一、Spring是什么 二、什么是IoC容器 1、什么是容器 2、什么是IoC   3、Spring IoC 4、DI(依赖注入) 4.1、IoC和DI的区别 5、 DL(依赖查找) 我们通常所说的Spring指的是Spring Framework(Framework的意思就是框架),它是一个开源的框架,有着庞大的社区,这就是它之所以能长久不

    2024年02月14日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包