一篇文章带你全面了解微服务

一篇文章带你了解Spring boot框架 Spring Boot 是基于 Spring Framework 的一个开源 Java 基于 Spring 框架的快速开发框架,由 Pivotal 团队开发。它旨在简化 Spring 应用的初始搭建以及开发过程。Spring Boot 的核心目标是让开发者能够快速上手,减少配置,快速启动和运行一个基于 Spring 的应用。 阅读详情

前言(废话,可以略过)

由优快云规定要2000个字以上才能使用推荐卡,但我记录的文档都是以精简为主,根本挤不出2000个字呀,于是我只好将8篇文档合为一篇来进行发表,顺便也表达一下自己的观点,为什么一些书籍文档总是表达的特别多,让人找不到重点在哪,特别是国外的书籍,好了,废话不多,开始表演

1 微服务架构(MSA)简介

特征
系统由两个及以上组件组成,组件提供服务(组件即服务)
组件可以使用任何语言来进行开发
组件自己享有自己的数据库
组件可独立部署
系统有自动化测试
单个组件的故障不会拖垮整个应用

微服务架构的基础
首先进行架构设计,将系统分为恰到好处的独立组件,由各个团队开发这些组件

微服务的优势
微服务架构解耦了各个组件之间的依赖,一个组件的开发不需要去了解另一个组件的设计,使开发变得容易
微服务组件较小,上手开放比较块
微服务组件的开发一般12人,小至1人,沟通容易

2 发现服务与API网关

发现服务
服务A需要向服务B发送请求,那么B的ip地址是多少呢?
这里引入了发现服务,发现服务保存了A、B的地址

服务注册
发现服务如何知道服务A、B的地址?如下有两种服务注册方式
自注册:
服务A、B启动时,自动向发现服务注册其地址,当服务状态改变时,自动通知给发现服务

第三方注册:
服务A、B启动时,自动向发现服务注册其地址,发现服务新起一个进程,监控所有以注册服务的状态

服务调用
A需要向服务B发送请求,如何发送?
客户端发现:
A访问发现服务,获取B的地址,然后向B的地址发送

服务端发现:
这里新加了一个中间服务,用于服务到服务之间的调用
A将请求发送给中间服务,中间服务从发现服务获取B的地址,中间服务调用B
在这里插入图片描述

Api网关
一般客户端(如:浏览器页面)多需要从多个服务获取数据,但客户端并不知道服务的地址
Api网关主要解决客户端到服务的调用问题
客户端只需调用Api网关,Api网关从发现服务获取服务的地址,然后调用服务
职责:
请求转发(如:/abc开头的URL发送给服务A,/def开头的发送给服务B)
验证权限
均衡负载
断路器(某个服务调用的失败此时超过设定的值,则一定时间内不在对该服务进行调用)

3 微服务端点之间的通信

一个业务需要调用服务A、B、C才能完成,那么如何调用A、B、C?

编制与编排
编制
编制模式使用一个中间服务调用服务A、B、C完成业务
在这里插入图片描述

编排
编排模式,只需调用服务A,服务A完成或执行到某个位置时广播,B收到广播后开始执行,同理C

同步和异步通信
同步
同步用于执行上有顺序的服务,或一个服务需要另一个服务的响应数据
如:服务A执行完,告知服务B,服务B执行完,告知服务C
注:同步方式使服务之间产生耦合

异步
异步方式下,某个服务完成,直接广播消息,另一个服务收到消息后,就会开始执行
如:服务A完成,广播消息,服务B收到消息,开始执行,同理C
注:异步方式下,服务之间不在关系对方是否存在,而只关系消息,解决了服务之间的耦合
在这里插入图片描述

4 微服务安全

安全架构
如果我们的服务分散在网络中,那么我们的安全架构可能如下:
在这里插入图片描述

如果我们的服务聚集在局域网中,那么我们的安全架构可能如下:
在这里插入图片描述

技术的选择
一般使用OpenId进行认证,OAuth2进行授权,使用JWT格式的Token
既然提到了OAuth2认证,那就分清楚OAuth2认证中的 授权服务器、资源服务器、客户端

授权服务器:即我们的认证服务器
资源服务器:服务1、2、3
客户端:上述中我们并没有画出来,客户端就是我们的前端

笔者推荐使用的OAuth授权方式为Implicit(隐式认证)

5 高效的数据模型

数据库
微服务推荐每个服务使用一个数据库,这样就会涉及到多个数据库的事务同步问题
使用Saga事务模式(CQRS Saga 链接)来处理多个数据库的事务

数据模型
使用DDD(领域驱动设计)来设计数据模型(教程链接)
使用上下文区分服务
避免共享数据

从单体应用更变为微服务逐步迁移数据模型
使用视图:
如我们添加了模型A,模型A的数据在表A、B、C中保存,如果我们修改数据库表,那可能会肯复杂,最好的方法是添加视图A,模型A映射到视图A

6 微服务测试

测试流程
单元测试
集成测试
服务测试
契约测试
端到端测试

单元测试
单元测试对组件内类的方法进行测试,根据方法的返回结果与预期的结果进行比较判断
单元测试由开发人员进行编写

集成测试
继承测试是将各个组件组合起来,进行测试
继承测试主要测试组件之间的接口
继承测试由开发人员组成起来的测试小组进行测试
如:
系统由ABCDEFG模块组成
在这里插入图片描述

测试如下
在这里插入图片描述

1.为A编写测试模块Sb,Sc,测试A调用BC模块的接口
2.加入B,为B编写测试模块Sd,Se,测试B调用DE模块的接口
3.后面同理…

组件(服务)测试
组件测试将服务部署到网络中,服务需要用到的数据库和需要调用的其他服务均由模拟服务器进行模拟(如:需要测试的服务A调用服务B期望返回数据“ABC”,那么我们直接返回“ABC”即可)

契约测试
什么鬼测试

端到端测试
测试整个应用,不使用任何模拟,站在用户的角度进行测试

7 微服务部署

持续继承(CI)和持续部署(CD)
持续继承:
团队的成员不断的将代码进行合并,并进行单元测试,至少一天一次

持续部署:
对集成的代码进行测试(如:集成测试,功能测试等),然后发布到域生产环境中进行验收测试,然后发布到生产环境中,整个过程都是自动化的

CI、CD工具
Jenkins可以完成持续继承和持续部署,帮助我们自动化的发布应用

Docker
Docker 是一个开源的应用容器引擎,容器非常适合持续集成和持续交付(CI / CD)工作流程,我们的微服务推荐发布的Docker中

8 监控与扩展

监控原则
监控只发送重要的信息
监控门前流量(即外部发送的请求)

通过日志记录帮助监控
在一个请求链上记录相同的请求ID到日志中,有助于日志查找

监控工具
如下工具能帮我们更好的监控系统
ELK:日志收集、搜索、展示工具
…

微服务系统扩展原则
通过复制服务组件扩展
通过将服务组件分解为更小的组件扩展

后言(???)

好吧,我坦白了,我的目的不是为了讲解微服务,上面的文章都是废话,以下才是正文

IceEmblemCMS
演示地址:http://www.iceemblem.cn/
账号/密码:admini/123456
Github:https://github.com/IceEmblem/IEManageSystem
目前CMS还处于开发阶段,bug 比较多,还请谅解

可视化编辑的CMS
与其他可视化 CMS 不同的是,IceEmblemCMS的组件具有自己的自定义配置和数据和执行逻辑,可以完成一系列功能,如图表,审核,评论,点赞等。IceEmblemCMS所有页面都是从空白页开始搭建,当然,你也可以导入现有的模板
在这里插入图片描述

独特的文章发表
IceEmblemCMS的文章发表机制与其他CMS不同,IceEmblemCMS的文章发表是在页面上进行操作的,而可以发表的内容则由组件决定(如:你添加了一个图表组件,那么发表文章的时候就会附带该组件的数据编辑)
在这里插入图片描述
正在集成移动App
是的,不是Web,是App,为了更便捷的操作,App的页面还是在浏览器上进行编辑,而这其中的差异我会想办法兼容

我的目的
明人不说暗话,我想要的的Star

微服务(Microservices)[翻译] 微服务架构”一词在过去几年中如雨后春笋般涌现,用来描述将软件应用程序设计为可独立部署的服务套件的特定方式。虽然这种架构风格没有精确的定义,但围绕业务能力、自动化部署、端点智能以及语言和数据的分散控制,围绕组织存在某些共同特征。2014 年 3 月 25 日詹姆斯·刘易斯James Lewis 是 Thoughtworks 的首席顾问,也是技术咨询委员会的成员。James 对从小型协作服务构建应用程序的兴趣源于大规模集成企业系统的背景。他使用微服务构建了许多系统,并且多年来一直是不断发展的社区的积极参与者。 阅读详情

相关推荐

一篇文章快速指导微服务拆分

1 微服务架构拆分理论基础-微服务定义 单一职责原则 运行在独立的进程中 轻量级的通信机制 松耦合,独立部署 微服务架构拆分理论基础-康威定律 康威定律:系统设计结构复制设计该系统的组织的沟通结构 2 微服务拆分需考虑的因素 团队 团队规模:控制在刚好吃完两只披萨的团队 团队成员:全栈,自治,包括业务,产品,开发,运维 团队划分是按业务,而不是技术 业务 业务平台化,基础业务下沉,如会员认...

zhengide的博客 4172

带你快速了解微服务

微服务架构在近几年一直很热门,尤其是随着敏捷开发、持续集成交付、DevOps、云技术、虚拟技术docker化等的深入人心,经常能在技术论坛,博客上看到相应的文章推送。正好现在我们公司使用的也是微服务架构,将一个原本巨大的单体应用进行拆分(比如金币服务,用户中心,有提供给PC、客户端、H5的服务等),用RPC框架进行微服务之间的通讯以及服务治理。今天简单的总结一下对微服务架构设计的理解。 微服务的...

433

微服务(Microservices)- 文章翻译

本文是翻译 https://martinfowler.com/articles/microservices.html 的内容,旨在介绍一下微服务这种设计架构,希望大家尽量阅读原文。文中翻译难免有疏漏,希望大家不吝指正,共同学习。———————————————————————————————————— 微服务架构的定义“微服务架构”(Microservice Architecture)一词在过去的几

zlz18225318697的博客 1145

一篇文章带你彻底了解微服务

一、微服务架构介绍 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的 类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。 概念:把一个大型的单个应用程序和服务拆分为数个...

Qqun954715313的博客 733

【微服务】一篇文章带你打开微服务大门

微服 务架构是一种使用一组微服务来开发单体应用的方法,每个微服务运行 在自己的进程中,并通过轻量级设备与HTTP协议的API进行通信。这些 微服务基于业务模块进行划分,每一个业务功能对应一个微服务,并能 够通过自动化部署机制来独立部署。这些微服务可以使用不同的编程语 言以及不同的数据存储技术来实现,并保持最低限度的集中式。

热爱技术,享受生活 856

一篇文章带你了解Kubernetes

【本文专栏于[头条号]、[知乎]同步发布,可关注同名账号订阅相关文章,每周固定更新】 【全文5489字,阅读时间约15分钟,建议先收藏】 Kubernetes是一个流行的开源平台,重要用于容器编排——也就是说,它用于管理由多个容器构建的应用程序。自2013年Docker容器化项目启动以来,容器已经变得越来越流行,但是与此同时,大型分布式容器化...

Fire_For_Code 500

一篇文章带你简单了解微服务架构

组件是可以独立替换和升级的软件单元2.1.2 什么是库和服务?微服务架构将使用库,但它们将自身软件组件化的主要方式是分解为服务。我们将库定义为链接到程序并使用内存函数调用调用的组件,而服务是进程外组件,它们通过诸如 Web 服务请求或远程过程调用之类的机制进行通信。(请仔细区分微服务架构中的库、组件、服务的关系)

rc1596919047的博客 1182

【微服务】微服务集成Rocketmq,一篇文章就够了

我们都知道,不管是单体项目也好,微服务分布式项目也罢,都逃不脱mq的使用,那么什么是mq?MQ的应用场景有哪些?消息消费有哪些要注意的细节问题?微服务中如何接入MQ?相信大家都会有或多或少的困惑点和不懂点,那这篇文章就带领大家了解Rocketmq-消息驱动。

热爱技术,享受生活 2万+

一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心

首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。 传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等。一个打车软件的架构图如下: 尽管也是遵循模块化开发,但最终它们会打包并部署为单体式应用。例如Java应用程...

mrdu_somefun的博客 537

VSCode搭配Keil开发STM32:从环境配置到代码跳转全流程(避坑指南)

本文详细介绍了如何使用VSCode搭配Keil进行STM32开发,从环境配置到代码跳转的全流程指南。通过安装必备插件和正确配置项目文件,开发者可以在VSCode中享受现代编辑器的便捷功能,同时保留Keil的编译调试能力,提升嵌入式开发效率。

weixin_28832121的博客 253

thinkphp5.0.24反序列化漏洞分析

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

m0_67392182的博客 1871

一文详解微服务架构,通俗易懂,看到很多人给了这篇文章很高的评价,转载推荐分享给大家

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。

2401_84692595的博客 913

飞塔防火墙CVE-2022-40684漏洞复现:手把手教你搭建靶场环境(附调试技巧)

本文详细指导如何搭建Fortinet飞塔防火墙CVE-2022-40684认证绕过漏洞的靶场环境,涵盖虚拟机部署、网络配置、调试模式开启及漏洞原理分析。通过手把手教程,读者可掌握漏洞复现与深度调试技巧,深入理解该认证绕过漏洞的利用与防御。

h6i7j8的博客 695

【云原生】什么是云原生?如何学习云原生?一篇文章带你了解云原生

云原生,相信这个名词大家并不陌生;云原生在近期可谓是爆火,伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,云原生很火,火得一塌糊涂。可是现在很多人还是不知道什么是云原生,所以今天我们就来聊一聊近期很火的这个名词:云原生吧 。

感谢您的关注! 1万+

禾赛XT16 vs XT32激光雷达实测对比:选16线还是32线?看完这篇不纠结

本文深度评测禾赛XT16与XT32激光雷达的性能差异与应用选择。通过实测数据对比,分析16线与32线激光雷达在点云密度、动态场景适应性及与IMU协同工作等方面的表现,帮助用户根据自动驾驶、机器人等不同应用场景做出最优选型决策。

table的专栏 945

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 290

一篇文章带你了解SpringBoot目录结构

而在服务层之间传输数据时,使用DTO。在 Spring Boot 项目中,mvnw 文件是 Maven Wrapper 的可执行脚本文件,它会根据项目中的配置自动下载和使用特定版本的 Maven。Maven Wrapper 是一个用于包装 Maven 的脚本和库文件的工具,可以将 Maven 包装在项目内部,不依赖于本地环境中是否已安装 Maven。|---|---|---/src/main/java/com/example/demo/vo :通常用于与前端交互,封装前端调用某个接口之后所需的所有数据。

qq_41765777的博客 9662

【Java基础】还看不懂JDK7 HashMap环的产生原理你来打我

JDK7对旧table数据重定位到新table的函数transfer如下,其中重点关注部分以标出。 头插法正常情况下: 并发情况下 线程1只执行了Entry<K,V> next = e.next就被挂起了,而线程2正常执行完毕,结果图如下: 线程1接着下面继续执行: 通过逐步分析跟绘图可以知道红色部分会有环产生。 ...

sowhat 4244

一文章带你了解微服务

1、由来: 单体应用-->SOA-->微服务 1.1、单体应用 概念:所有功能全部打包在一起。应用大部分是一个war包或jar包。例如:一个乘客项目中有 用户、订单、消息、地图等功能。随着业务发展,功能增多,这个项目会越来越臃肿。 好处:容易开发、测试、部署,适合项目初期试错。 坏处: - 复杂性高:代码多,十万行,百万行级别。加一个小功能,会带来其他功能的隐患,因为它们在一起。 - 技术债务:人员流动,不坏不修,因为不敢修。 - 持续部署困难:由于是全量应用,改一个小功能,全...

zy_crazy_code的博客 277

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1182

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

简单光学 1万+

微服务写的最全的一篇文章

今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。 什么是微服务 1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可) 2)独立的进程(java的tomcat,nodejs等) 3)轻量级的通信(不是soap,是http协议) 4)基于业务能力(类似用户服务,商...

JAVA高级架构 2288

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

微服务(Microservices)——Martin Flower【翻译】

微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务。目前,这种架构方式还没有准确的定义,但是在围绕业务能力的组织、自动部署(automated deployment)、端智能(intelligence in the endpoints)、语言和数据的分散控制,却有着某种共同的特征。 ...

Jason王祖龙 6346

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一篇文章带你了解Cloud Native

转自:https://blog.youkuaiyun.com/u011537073/article/details/72360966?locationNum=8&fps=1&utm_campaign=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com 背景 Cloud Native表面看起来...

hxt的博客 1305

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

微服务 MicroServices 学习笔记

微服务(MicroServices)架构是当前互联网业界的一个技术热点,圈里有不少同行朋友当前有计划在各自公司开展微服务化体系建设,他们都有相同的疑问:一个微服务架构有哪些技术关注点(technical concerns)?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型?笔者之前在两家大型互联网公司参与和主导过大型服务化体系和框架建设,同时在这块也投入了很多时间去学习和研究,有一些经验和学习心得,可以和大家一起分享。

软件开发工程师 3795

【Java开发日记】一篇文章让你学会SpringCloud-微服务架构

架构的发展历程是从单体式架构,到分布式架构,到SOA架构,再到微服务架构。图1:架构演进单体架构:未做任何拆分的Java Web程序图2:单体架构示意图分布式架构:按照业务垂直划分,每个业务都是单体架构,通过API互相调用。图3:分布式架构示意图SOA架构:SOA是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或消费服务,所以也是分布式架构的一种。图4:SOA架构示意图。

纵有疾风起 人生不言弃 7090
上一篇: 1 整体架构介绍
下一篇: 2 Saga 模式介绍
dabusidede
博客等级 码龄9年 84粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值