6微服务系统架构_第1页
6微服务系统架构_第2页
6微服务系统架构_第3页
6微服务系统架构_第4页
6微服务系统架构_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章Linux系统与服务构建运维3.16微服务系统架构目录2010203微服务概述微服务架构的优缺点常用技术选型301微服务概述学习目标了解什么是微服务401微服务概述微服务架构是一种架构概念,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务,并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。它的核心思想在于通过将业务功能和需求分解到各个不同的服务中进行管理,实现对业务整体解耦。围绕业务模式创建应用服务,应用服务可独立地进行开发、迭代和部署,使项目的架构更加清晰明确。随着云计算及互联网公司大量开源轻量级技术不停涌现并日渐成熟,微服务应用的使用场景越来越多。502微服务架构的优缺点学习目标了解微服务架构的优点了解微服务架构的缺点602微服务架构的优缺点1.优点①每个服务都比较简单,只关注于一个业务功能。②微服务架构方式是松耦合的,可以提供更高的灵活性。③微服务可通过最佳及最合适的不同的编程语言与工具进行开发,能够做到有的放矢地解决针对性问题。④每个微服务可由不同团队独立开发,互不影响,加快推出市场的速度。⑤微服务架构是持续交付(CD)的巨大推动力,允许在频繁发布不同服务的同时保持系统其他部分的可用性和稳定性。702微服务架构的优缺点2.缺点微服务的一些想法在实践上是好的,但当整体实现时也会呈现出其复杂性。①运维开销及成本增加。整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成需要构建、测试、部署、运行数十个独立的服务,并可能需要支持多种语言和环境。这导致一个整体式系统如果由20个微服务组成,可能需要40~60个进程②必须有坚实的DevOps开发运维一体化技能。开发人员需要熟知运维与投产环境,并需要掌握必要的数据存储技术(如NoSQL),但是具有较强DevOps技能的人员比较稀缺,会带来招聘人才方面的挑战。802微服务架构的优缺点③隐式接口及接口匹配问题。把系统分为多个协作组件后会产生新的接口,这意味着简单的交叉变化可能需要改变许多组件,并需协调一起发布。在实际环境中,一个新品发布可能被迫同时发布大量服务,由于集成点的大量增加,微服务架构会有更高的发布风险。④代码重复。某些底层功能需要被多个服务所用,为了避免将“同步耦合引入到系统中”,有时需要向不同服务添加一些代码,这就会导致代码重复。⑤分布式系统的复杂性。作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如,网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。902微服务架构的优缺点⑥异步机制。微服务往往使用异步编程、消息与并行机制,如果应用存在跨微服务的事务性处理,其实现机制会变得复杂化。⑦可测性的挑战。在动态环境下服务间的交互会产生非常微妙的行为,难以可视化及全面测试。经典微服务往往不太重视测试,更多的是通过监控发现生产环境的异常,进而快速回滚或采取其他必要的行动。但对于特别在意风险规避监管或投产环境错误会产生显著影响的场景下需要特别注意。1003常用技术选型学习目标了解微服务的基础层框架了解微服务的持久层框架了解微服务的中间件集成了解微服务的数据存储1103常用技术选型在实际的技术选型中,最主要还是要结合业务、系统的未来发展的特征进行合理判断,以下内容是针对常用的技术服务简要说明,具体细节和原理及如何应用,可通过百度等搜索引擎搜索关键词了解详情,本章的3.17实战案例将通过商用的实际案例来安装和部署相关服务,理解各服务之间的关系。1203常用技术选型1.基础层框架SpringBoot是构建微服务的基础框架,是SpringCloud的基础,其自带Tomcat,不需要在Tomcat中,可以直接启动。自身也有各项优点,如自动化配置、快速开发、轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架。它不仅可以帮助用户快速地构建微服务,还可以轻松简单地整合SpringCloud实现系统服务化。而如果使用了传统的Spring构建方式的话,在整合过程中用户还需要做更多的依赖管理工作,才能让它们完好地运行起来。1303常用技术选型2.持久层框架MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(PlainOldJava

Objects,普通的Java对象)映射成数据库中的记录。通常会用于SpringBoot微服务框架。1403常用技术选型3.中间件集成(1)RabbitMQRabbitMQ是基于AMQP协议的开源实现,由以高性能、可伸缩性出名的Erlang写成。目前客户端支持Java、.Net/C#和Erlang。在AMQP(AdvancedMessageQueuingProtocol)的组件中,Broker中可以包含多个Exchange(交换机)组件。Exchange可以绑定多个Queue以及其他Exchange。消息会按照Exchange中设置的Routing规则,发送到相应的MessageQueue。在Consumer消费了这个消息之后,会跟Broker建立连接,发送消费消息的通知。此时MessageQueue才会将这个消息移除。1503常用技术选型(2)Elasticsearch它是一个基于ApacheLucene实现的开源的实时分布式搜索和分析引擎。SpringBoot的项目也提供了集成方式:spring-boot-starter-data-elasticsearch以及spring-data-elasticsearch。1603常用技术选型(3)Kafka它是一个高性能的基于发布/订阅的跨语言分布式消息系统。Kafka的开发语言为Scala。其比较重要的特性是:高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition,consumergroup对partition进行consume操作。其高吞吐的特性,除了可以作为微服务之间的消息队列,也可以用于日志收集、离线分析、实时分析等;可扩展性:Kafka集群支持热扩展;持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;容错性:允许集群中节点失败(即若副本数量为n,则允许n-1个节点失败);高并发性:支持数千个客户端同时读写。1703常用技术选型(4)ZooKeeper它是一个分布式、开放源码的分布式应用程序协调服务,是Google(谷歌)Chubby的一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护、域名服务、分布式同步、组服务等。ZooKeeper的架构通过冗余服务实现高可用性。1803常用技术选型4.数据存储(1)MySQL它通常在普通的业务库,数量不大的情况下会选择MySQL,可实现数据库拆分。(2)Redis它是一个开源、内存存储的数据结构服务器,通常在SpringCloud中作为Pub/Sub异步通信、缓存或主数据库和配置服务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论