《微服务基础知识》课件.docx

上传人:李司机 文档编号:6993970 上传时间:2024-04-02 格式:DOCX 页数:12 大小:37.29KB
返回 下载 相关 举报
《微服务基础知识》课件.docx_第1页
第1页 / 共12页
《微服务基础知识》课件.docx_第2页
第2页 / 共12页
《微服务基础知识》课件.docx_第3页
第3页 / 共12页
《微服务基础知识》课件.docx_第4页
第4页 / 共12页
《微服务基础知识》课件.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《《微服务基础知识》课件.docx》由会员分享,可在线阅读,更多相关《《微服务基础知识》课件.docx(12页珍藏版)》请在三一办公上搜索。

1、微服务基础知识1 .基本概念微服务(Microservices):一种架构风格,一个大型复杂软件应用由一个或者多个微服务组成。系统中各个微服务可被独立部署,各个微服务之间松耦合。每个微服务仅关注完成T牛任务并能完成的很好;每个任务代表一个小的业务能力。1.1. 特征 根据业务模块划分服务种类。 每个服务可以独立部署并且互相隔离。 通过轻量的API调用服务。 服务需要保证良好的高可用性。1.2. 微服务应用4个设计原则AKF拆分原则前后端分离无状态服务Restful通信风格1.AKF拆分原则AKF扩展立方体(参考TheArtofScalability),是f叫AKF的公司的技术专家抽象总结的应用

2、扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。X轴:指的是水平复制,很好理解,就是讲单体系统多运行几个实例,做个集群加负载均衡的模式。z轴:是基于类似的数据分区,比如一个互联网打车应用突然或了,用户量激增,集群模式撑不住了,那就按照用户请求的地区进行数据分区,北京、上海、四川等多建几个集群。Y轴:就是我们所说的微服务的拆分模式,就是基于不同的业务拆分。场景说明:比如打车应用,一个集群撑不住时,分了多个集群,后来用户激增还是不够用,经过分析发现是乘客和车主访问量很大,就将打车应用拆成了三个乘客服务、车主服务、支付服务。三个服务的业务特点各不相同,独立维护,各自都可以

3、再次按需扩展。2 .前后端分离前后端分离原则,简单来讲就是前端和后端的代码分离也就是技术上做分离,我们推荐的模式是最好直接采用物理分离的方式部署,进一步促使进行更彻底的分离。不要继续以前的服务端模板技术,比如JSP,把JaVaJSHTMLCSS都堆到一个页面里,稍复杂的页面就无法维护。这种分离模式的方式有几个好处:前后端技术分离,可以由各自的专家来对各自的领域进行优化,这样前端的用户体验优化效果会更好。分离模式下,前后端交互界面更加清晰,就剩下了接口和模型,后端的接口简洁明了,更容易维护。前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支撑前端的webUI移动App等

4、访问。3 .无状态服务对于无状态服务,首先说一下什么是状态:如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个状态数据的服务被称为有状态服务,反之称为无状态服务。那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的有状态数据服务中。场景说明:例如我们以前在本地内存中建立的数据缓存、Session缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,就可以做到按需动态伸缩,微服务应用在运行时动态增删节

5、点,就不再需要考虑缓存数据如何同步的问题。4 .RestfuI通信风格作为一个原则来讲本来应该是个无状态通信原则,在这里我们直接推荐一个实践优选的Restful通信风格,因为他有很多好处:无状态协议HTTP,具备先天优势,扩展能力很强。例如需要安全加密是,有现成的成熟方案HTTPS可用。JSON报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好。语言无关,各大热门语言都提供成熟的RestfulAPI框架,相对其他的一些RPC框架生态更完善。当然在有些特殊业务场景下也需要采用其他的RPC框架,如thrift,avro-rpcxgrpc0但绝大多数情况下ReStfUl就足够用了。13优

6、缺点优点:服务独立性:由于每个服务都是独立开发和部署的,因此无需任何开销即可轻松扩展应用程序的特定部分。例如,使用微服务构建的电影票务系统可能会在新电影上映时扩大其预订服务,同时保留通知服务。领蝴区动设计:通过微服务,开发者首先专注于理解业务领域。之后,将微服务开发为最终有助于反映微服务的领域实体会更容易。差异化技术栈:当独立团队构建和维护服务时,他们不再需要使用一种编程语言来构建整个应用程序。相反,不同的团队可以使用最适合该任务的其他编程语言,并使用定义良好的API来改善这些服务之间的通信。限制:可观察性困难:通过微服务,团队将许多可移动组件引入到通常分布的应用程序中。正因为如此,很难一目了

7、然地获得整个应用程序的高级视图。因此,监控和观察基于微服务的应用程序变得越来越困难。大多数团队都会很早就采用监控和可观察性工具。延迟增加:随着可移动部件的增加,应用程序中会发出更多请求,这样会造成单个请求的更多延迟,服务必须与多个其他服务通信才能编译和构造响应。这通常会增加往返时间,因此会减慢应用程序的速度。2.最佳实践一、分离业务逻辑微服务架构的核心思想是分而治之,即将一个大型应用系统拆分成多个小型服务,每个服务都有自己的业务逻辑。因此,分离业务逻辑是微服务架构设计的首要彳壬务。首先,要根据业务需求将系统拆分成不同的服务。每个服务应该尽可能独立,按照功能进行分组。其次,服务之间的交互应该通过

8、明确定义的接口来实现。这样可以确保服务之间的通信是可靠的,并且可以根据需要进行升级和扩展。二、确保服务的可靠性服务的可靠性是微服务架构设计中非常重要的一个方面。由于系统被拆分成多个服务,因此单个服务出现问题不会对整个系统造成影响。但是,如果一个服务始终不可用,系统的整体可用性将会受到影响。为了确保服务的可靠性,可以采用以下措施:1 .使用容器化技术来隔离服务。这样可以确保每个服务都运行在独立的环境中,相互之间不会产生干扰。2 .服务可用性监控。监控服务的响应时间和错误率,及时发现服务出现问题并采取措施。3 .保留备份服务。如果一个服务出现问题,可以快速切换到备份服务,确保系统的稳定运行。三、采

9、用自动化工具在微服务架构中,需要管理的服务数量较多,这就需要使用自动化工具来简化服自动化工具可以帮助进行服务的部署、扩展和监控寄玲。这可以释放开发人员的时间,让他们更加专注于开发新的服务和应用功能。同时,自动化工具也可以确保服务的部署和配置是一致的,减少人为错误的可能性。四、重视安全问题微服务架构中,服务之间的通信是非常频繁的。因此,要确保服务之间的通信是安全可靠的。服务之间的数据传输应该进行加密,并且在服务之间建立安全通道。此外,还需要对服务进行身份验证和授权,以确保只有授权的用户才能访问服务。这可以通过统一的认证和授权中心来实现。微服务架构的设计需要遵循一些最佳实践。首先要分离业务逻辑,并

10、确保服务之间的交互通过明确定义的接口来实现。其次要确保服务的可靠性,并采用自动化工具来简化服务管理的任务。最后,要重视安全问题,确保服务之间的通信是安全可靠的。通过遵循这些最佳实践,可以确保微服务架构的高效运行,并满足各种业务需求。4 .开发框架1、SpringBootCfSngSpringBOot可能是创建微服务最简单的Java框架。凭借其开源特性,它具有丰富的功能。除此之外,它几乎可以轻松安装在任何平台上。除了提供坚实的后盾之外,它还提供了丰富的开发者社区网络和非常快的响应时间。它还提供安全性、自动配置、自动依赖性解析和其他几种服务,从而加快应用程序开发速度。特征:SpringBOOt允许

11、同时监控多个组件。通过负载平衡,流量被分布在小块中,从而实现最大吞吐量。它利用发布-订阅(pub-sub)范例来提供分布式消息传递系统。2、OracleHelidon骂helidon.io最近新发布了一个名为OradeHelidon的Java微服务框架,其包括MP和SE版本。尽管比较新而缺乏文档,但两者都已被证明是许多项目的不错选择。HelidonSE提供多项功能,包括GraaIVM本机映像以及函数式和异步编程。特征:0.09至I2.03秒之间的最短启动时间。包含一个完整的云环境,其中包含所有基本和流行的技术。提供HelidonMP和SE两个版本以满足各种编程需求。3、GoMicroOmicr

12、oGo谷歌支持的Go语言在微服务开发人员中广受欢迎。可以使用专为创建微服务而设计的GoKit和GoMicro框架在Golang上轻松构建微服务。你也可以在此框架中构建无缝集成的REST和支持gRPC的微服务。借助G。MiCrO,你可以轻松地使用Go创建微服务。这个PRC库为开发者提供了创建微服务所需的所有构建块。特征:框架减少了应用程序部署过程中的摩擦,促进了互操作性开发人员可以插入工具来使用Go创建应用程序使用预定义的模板轻松开始4、QuarkusQUARKUS特别指出的是,Quarkus非常适合Kubernetes项目!这是redhat为Kubernetes提供QuarkusJava框架,

13、专门设计用于与OPenJDKHotSpot和GraavaIVM配合使用。该框架提供了命令式和反应式编程模型来解决与微服务架构相关的挑战。Kubernative原生Quarkus框架的创建是为了最大限度地减少内存消耗并最大限度地缩短开发的启动时间(数十毫秒快速的启动时间使微服务可以在容器和Kubernetes中轻松扩展。特征:它提供了各种各样的技术、库和API,使其易于学习和使用。使用此平台,您可以提前优化JVM和本机代码的代码,以提高应用程序性能。该框架拥有比其他框架更快的启动时间。5、MolecularMolecular框架提供了一种独特的微服务方法。随着NodeJS的日益普及,JavaSc

14、ript开发人员可以从这个框架中受益。Molecular是一个快速、动态且功能强大的NodeJS微服务框架。该技术可以创建高效、可靠且可访问的服务。特征:支持事件驱动流程的基础设施自适应发现和内置服务注册表查询和响应负载均衡6、Lagom使用Lagom,其使用Java或Scala开发微服务应用程序。支持Lagom的技术是Akka和Play,它们已经用于多个所需的应用程序。使用Lagom的统一开发生态系统解决业务问题比连接服务容易得多。一次操作即可创建项目、启动微服务并启动Lagome每当修改构建时,它都会自动重新加载。特征:明确定义的开发职责一提高敏捷性以更低的风险更频繁地启动从而可以延长开发

15、周期为了优化当前的计算机设置并满足高端用户的需求,系统需要反应性、鲁棒性、适应性和灵活性等反应性特征。7、Ballerina我们可以使用Ballerina创建分布式系统而无需再求助于传统的微服务框架。它是一种原生云原生编程语言,同时也是开源的。止匕外,它是一种结构化语言,使开发人员能够在程序中定义他们的服务接口和静态类型。借助Ballerina开发者可以从头开始构建与解耦系统,由于它是图形化的、面向数据的和并发的。使用它,你可以设计Web服务的软件和应用程序。特征:这是一种易于学习且易于访问的开源编程语言。使用视觉表示使交互设计更容易理解。使用图表集成项目的所有方面。8、EclipseVer.

16、x该框架是在Eclipse基础下的产品,此解决方案非常适合通过Java虚拟机(JVM)开发React应用程序。EdipseVertx平台还为执行受限环境(例如虚拟机和容器)提供了完整的解决方案。此外,Vert.x工具包为构建任何组件提供了高度的灵活性和准确性。vert.x没有什么比使用所有常用库创建任何组件的能力更好的了。通过这种方式,Edipsevert.x使你的项目变得更加有趣。特征:多语言API允许开发人员使用多种语言编写异步网络应用程序。作为单线程应用程序,开发人员可以使用I/O线程模型使用vert.x编写代码。使用内核线程,它可以处理中小型硬件上的多个并发情况。9、Micronaut

17、Micronaut是用于构建模块化和基于微服务的应用程序的多语言框架之一。使用该框架,开发人员可以开发基于JVM的模块化应用程序。为了构建微服务架构,创始人专注于构建全栈环境,而不再需要集成正确的工具包。Micronauts最好的一点是它们不依赖于代码库的大小来启动并消耗内存。其结果是启动速度快、吞吐量高、内存使用量最少。特征:GraaIVM应用程序可以在几毫秒内启动成功对新开发人员使用通用编码标准,确保平滑的学习曲线。通过开源技术提高内存利用率与运行时间10、AxonAxonFramework使用Axon,可以修改现有Java程序,但是无需大量代码重写。Axon包括用于企业软件开发流程的软件系统与架构,以提供业务就绪等支持。框架和服务器分别提供架构和模型。所有这些均为免费。特征:通过分层存储提高生产力并降低成本灾难恢复选项,包括手动和辅助视点上下文仅在所有系统修改后附加

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号