微服务架构与实践(第2版) - (EPUB全文下载)
文件大小:1.7 mb。
文件格式:epub 格式。
书籍内容:
微服务架构与实践(第2版)
第1部分 基础篇
第1章 微服务架构综述
第2部分 策略篇
第2章 微服务生态系统
第3章 微服务关键技术
第4章 微服务参考模型
第5章 基于参考模型的实践
第6章 遗留系统的微服务改造
第3部分 实战篇
第7章 微服务开发框架ServiceComb
第8章 微服务云应用平台ServiceStage
第9章 SockShop系统分析与设计
第10章 实现SockShop系统的第一个服务
第11章 实现SockShop系统的其他服务
第12章 部署SockShop系统
第13章 运维SockShop系统
附录A ServiceStage相关概念
附录B TOSCA模板介绍
写在最后
参考文献
资源列表
第1部分 基础篇
第1部分为基础篇,介绍应用架构的演进历程以及微服务诞生的背景,并通过对微服务概念、特征的探讨,帮助读者深刻理解微服务的本质。同时,本部分的内容也客观地阐述了实施微服务时所面临的挑战。
另外,随着微服务相关实践在业界的成熟,新的工具和理念不断涌现,如Serverless、Service Mesh等,这也使我们可以更高效地构建微服务。在本部分中,笔者也会对这些技术一并进行探讨。
基础篇的主要内容包括:
● 软件架构发展回顾以及微服务诞生的背景。
● 微服务架构的本质及落地时面临的挑战。
● 微服务与SOA、Serverless的关系。
● 下一代微服务Service Mesh。
第1章 微服务架构综述
微服务架构模式(Microservice Architecture Pattern)是近几年在软件架构模式领域里出现的一个热词。虽然其诞生时间不长,但在各种演讲、文章、书籍上所出现的频率已经让很多人意识到它对软件领域所带来的深远影响。
随着业务的快速变化以及竞争的不确定性,传统的软件系统架构正面临着诸多挑战。而微服务,正如Gartner所预测的那样,正在为新一代的软件架构,如快速响应、容错、按需伸缩等特性产生积极的推动作用。
那什么是微服务架构?它的本质是什么?和传统的面向服务架构(SOA)相比,它有什么样的异同点?它是我们所期望的架构领域的“银弹”吗?在过去的几年中,它有着怎样的发展?它与Serverless、Service Mesh等新技术,有着怎样的联系?未来它又会有怎样的发展趋势?本章将一一解答上述问题,揭开微服务的神秘面纱。
1.1 软件架构发展历史
什么是软件架构
和建筑领域的架构相似,软件架构是软件系统的高层次结构,通过这些结构可以推理软件系统,了解每个结构包含的软件元素,元素之间的关系以及元素、关系等的属性。IEEE认为软件架构是关于“软件密集型系统”的架构,并将其定义为“软件对整个系统的设计、构建、部署和演进产生重大影响的任何系统”,不仅包括硬件和软件,还包括“人类、过程、程序、设施、材料和自然发生的实体”。
ANSI/IEEE 1471-2000 IEEE Recommended Practice for Architectural Description for Software-Intensive Systems
软件架构是对复杂系统的结构进行抽象,它帮助我们在系统实现前,对软件系统进行元素重用、行为分析和决策提供基础。软件架构也体现了组织沟通的结构(康威定律),同时也影响了系统实施的实践以及维护的难度。
单体架构(Monolithic Architecture)
计算机科学领域自成立以来就遇到了与复杂性有关的问题。开发人员通过选择正确的数据结构,开发算法以及应用关注点分离的概念来解决早期的复杂问题。当时的企业组织结构多为功能型组织,同时服务只能部署在性能、可靠性强大但价格不菲的大型机上。在这样的条件下,应用的呈现、逻辑处理和数据存储等功能,都集中部署和运行在同一台服务器上,通常称为单体架构。
此时,应用以及其部署的服务器承担处理大部分的任务,对应用的访问通常通过没有处理能力的哑终端进行。随着硬件价格降低,哑终端逐渐演化为拥有一定处理能力的智能终端,逐渐发展为客户端-服务器(C/S)的模型。根据客户端和服务器端承担的处理任务的多少,这种模型会有多种变体。其带来的主要挑战是需要维护和更新所有用户的客户端。进而导致了浏览器客户端(B/S)模型的产生,通过统一的客户端,向服务器发起HTTP请求,然后跟据响应渲染浏览器的UI。
哑终端是在早期的类UNIX操作系统的计算机系统上使用的一个术语,一般特指只能输入、输出和显示字符的终端,即字符终端。哑终端本身不具备计算能力。
分层架构(Layered Architecture)
随着服务器开始在Web世界中承担更多的职责,如服务UI、事务处理、数据存储等,由于受到面向过程的思维及设计方式的影响,所有的逻辑代码并没有明显的区分,因此代码之间的调用相互交错,错综复杂。
另一方面,面向对象分析、面向对象设计、设计模式、企业架构模式等理念及方法论的不断发展,从为用户提供功能及有效组织软件结构的角度考虑,架构师将这些职责划分为各个逻辑层(UI层、业务层、数据层等)来简化复杂性。每一层负责的部分更趋向于具体化、细致化,于是软件的分层架构(Layered Architecture)逐渐出现。
在分层架构中,数据库作为系统组件不需要实现,所以典型的分层架构通常包括表示层、业务逻辑层以及数据访问层,如图1-1所示。
图1-1 软件的分层架构
● 表示层
表示层的部分指当用户使用应用程序时,看见的、听见的、输入的或者交互的部分。譬如,有可能是信息的显示、音乐的播放,或者可以输入的文本框、单选按钮,以及可点击的按钮等。通过这些元素,用户同软件进行交互并获取期望的价值。目前的用户界面在大部分情况下为Web方式,当然也可以是桌面软件的形式,例如.NET的WINFORM或者Java的SWING。
● 业务逻辑层
业务逻辑部分是根据用户输入的信息,进行逻辑计算或者业务处理的部分。业务逻辑层主要聚焦应用程序对业务问题的逻辑处理,以 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 微服务架构与实践(第2版) - (EPUB全文下载)