与单块电源架构相比较,微服务架构有哪些特点

当前位置: >
> 微服务架构与实践 (王磊著) 中文pdf版[19MB]
微服务架构与实践 (王磊著) 中文pdf版[19MB]
微服务架构与实践下载
书籍大小:19.1MB
软件语言:简体中文
书籍类型:
书籍授权:免费软件
更新时间:
书籍类别:其它相关
购买链接:&&
应用平台:
网友评分:
内容介绍热点排行下载地址相关内容
内容包括326个种和品种,以“怎么办”的形式,深入浅出、简明扼要地直接进行了回答,力求做到全面性、科学性、新疑性和实用性相结合,对花卉生产者也有参考指导作《浪潮之巅》 近一百多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在长达十年甚至几十年的时间里,它们代表着科技的浪潮,直到下一波浪潮的来主板维修从入门到精通(全彩典藏)》由资深主板维修培训师精心编写,以最新主板为基础,全面、系统、深入地讲解了主板元器件的识别和检测、主板各种单元电路的结构原理、单新版增加了大数据和机器学习等最新内容,以满足人们对当下技术的学习需求;同时,根据专家和读者的反馈更正了错漏,并更新了部分内容网络存储是一个涉及计算机硬件以及网络协议技术、操作系统以及专业软件等各方面综合知识的领域。目前国内阐述网络存储的书籍少之又少,大部分是国外作品,对存储系统底层细算法(第四版)作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。本书主要介绍计算机单机系统的组成原理及内部工作机制,包括计算机各大部件的工作原理、逻辑实现、设计方法及其互连构成计算机整机的技术《计算机组成与体系结构:性能设计(原书第8版)》以intel x86和arm两个处理器系列为例,结合当代计算机系统性能设计问题,介绍了计算机体系结构的主流技术和最新技术计算机组成原理(第2版)概念清楚,通俗易懂,书中举例力求与当代计算机技术相结合,可作为高等学校计算机专业教材,也可作为其他科技人员的参考书。本草纲目是一部具有世界性影响的博物学著作,作者李时珍,这是它的电子版本,以《本草纲目金陵版》为基础,按药物的“正名”、“释名”、“气味”、“主治”、“附方”分为
微服务架构与实践 (王磊著) 中文pdf版[19MB]
CopyRight &
JB51.Net , All Rights Reserved我们为什么需要微服务架构
你好,游客
我们为什么需要微服务架构
来源:51CTO&
  近几年,随着的进步和服务的增长,微服务越来越成为在博客、媒体讨论组和会议演讲中出现的热门话题,被更多的人重点关注。正如本文作者 51CTO博客专家孙杰在文中提到的,尽管微服务架构存在着许多争论,但这并不影响它正在为敏捷部署以及复杂企业应用实施提供着巨大的帮助的事实。究竟我们为什么需要微服务架构?与传统SOA相比,微服务架构有哪些优势?在使用微服务架构时,我们又将面临哪些挑战?
  作者简介
  孙杰,拥有超十二载IT领域工作经验,先后在知名外企、电商平台和国企能源行业的数据中心从事IT系统架构搭建、、架构部署及运维等工作。热爱技术喜欢分享,崇尚大道至简。在若干大中型项目的建设和运维中,积累了丰富的系统运维、架构设计、平台优化等经验。在博客平台发布了大量IT技术和生活文章,并成为51CTO平台上的专家博主。
  如何理解微服务
  微服务这一概念出现于2012年,是因软件作者Martin Fowler而流行,围绕业务、自动化部署、终端智能以及语言和数据的分散控制有一些常见的新特性。微服务也是一项在云中部署应用和服务的新技术。随着云计算技术的进步和服务的增长,微服务架构越来越多的受到了人们的关注。尽管也存在着许多不同的争论,微服务架构模式却正在为敏捷部署以及复杂企业应用实施提供着巨大的帮助。
  通常我们的开发也是模块化设计逻辑,程序完成后会打包并部署为一个个具体的应用。每个具体的格式依赖于相应的应用语言和框架。例如,Java应用通常会被打包为WAR格式,部署在Tomcat或者Jetty上,而另外一些Java应用会被打包成自包含的JAR格式,同样,Rails和Node.js会被打包成层级目录。这种应用开发风格很常见,也很易于调试,只需要简单运行此应用,用些工具链接UI就可以完成端到端测试。打包好的应用拷贝到服务器端,通过在负载均衡器后端运行多个拷贝就可以轻松实现应用扩展。在早期这类应用运行的都很好,但一个简单的应用会随着时间推移逐渐变大。几年后,这个小而简单的应用会变成了一个巨大的怪物。一旦你的应用变成一个庞大而又复杂的怪物,那开发团队肯定很痛苦。敏捷开发和部署举步维艰,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都不可能搞懂它。因此,修正bug和正确的添加新功能将变的非常困难,并且很耗时。
  当一个应用越大,启动时间就会越长。那么大部分时间就要在等待中渡过,生产效率会受到极大影响。
  另外,一个应用在不同模块发生资源冲突时,扩展将会非常困难。应用的另外一个问题是可靠性。当所有模块都运行在一个进程中,任何一个模块中的一个bug,比如内存泄露,将会有可能弄垮整个进程。除此之外,因为所有应用实例都是唯一的,这个bug将会影响到整个应用的可靠性。
  如果采用微服务处理结构模式则可以很好的解决上述问题。微服务架构的思想不是开发一个复杂巨大的应用,而是将应用分解为若干小的、互相连接的微服务。
  六大优势
  微服务架构相对于传统的SOA,优势也很明显:
  1、复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
  2、独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
  3、技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,当需要对技术栈进行升级时所面临的风险较低,甚至完全重构一个微服务也是可行的。
  4、容错:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
  5、扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
  6、功能特定:一个微服务一般完成某个特定的功能,比如消息管理、客户管理等等。每一个微服务都有自己的业务逻辑和适配器。一些微服务还会发布API给其它微服务和应用客户端使用。其它微服务完成一个Web UI,运行时,每一个实例可能是一个云VM或者是Docker容器。
  三大挑战
  1.固有的复杂性:微服务架构有很多优点,当然也有其不足。比如微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制。更甚于,他们必须写代码来处理消息传递中速度过慢或者不可用等局部失效问题。
  2.分区的数据库架构:另外一个关于微服务的挑战来自于分区的数据库架构。在商业交易系统中同时给多个业务分主体更新消息很普遍。这种交易对于单个应用来说很容易,因为只有一个数据库。而在微服务架构应用中,需要更新不同服务所使用的不同的数据库。使用分布式交易并不一定是好的选择,不仅仅是因为CAP理论,还因为今天高扩展性的NoSQL数据库和消息传递中间件并不支持这一需求。最终你不得不使用一个最终一致性的方法,从而对开发者提出了更高的要求和挑战。
  3.波及多个服务:最后一个问题在于,微服务架构模式应用的改变将会波及多个服务。比如,假设你在完成一个项目案例,需要修改服务A、B、C,而A依赖B,B依赖C。在单个应用中,你只需要改变相关模块,整合变化,部署就好了。相比之下,微服务架构模式就需要考虑相关改变对不同服务的影响。比如,你需要更新服务C,然后是B,最后才是A,幸运的是,许多改变一般只影响一个服务,而需要协调多服务的改变很少。
  使用微服务构建适合云的新型应用是很有意义的,因为它让你既利用了横向扩展架构,也利用了纵向扩展架构,还额外得到API的组合,且在整个业务中可重复利用。可能在每一分钟构都在交付新服务,这样你就会拥有一个敏捷的且即时响应的应用程序平台,当然这一平台一直在不断改进中,微服务架构也在前进着。
  主要周边技术
  DOCKER容器
  微服务架构与SOA
  微服务与分布式
  微服务与数据一致性
  微服务与数据库
  微服务与PAAS
  微服务与自动化部署
  微服务与Mesos或者Kubernetes
  微服务层面如何提供缓存、权限控制、API统计和监控
相关新闻 & & &
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》研发主编,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
容器技术的发展,让微服务的构建变得容易,例如普元公司正在使用Kubenetes作为一个底层的容器调度平台来支撑上层微服务的部署运行。日前,普元普元基础设施架构师接受CSDN记者专访,介绍了他对微服务的理解,以及普元团队的微服务实践经验。王文斌表示,微服务架构需要的技术关注点包括:基础设施自动化、服务注册、服务发现、服务路由、服务熔断、集中配置、统一日志收集、服务监控等。可选的框架有OpenStack、Kubenetes、Swarm等。选型的时候,除了考虑自身对于这些框架的熟悉度以及可掌握度,还需要从技术/功能、项目运作模式、技术提供者的背景、生态环境等方面考虑。他还谈到,微服务架构的开发模式不同于传统方式,它将应用按业务能力来划分为不同的服务,每个服务都要求在对应业务领域的全栈(从前端到后端)软件实现,从界面到数据存储到外部沟通协作等等。因此团队的组织是跨功能的,包含实现业务所需的全面的技能。近年兴起的全栈工程师正是因为架构和开发模式的转变而出现,当然具备全栈的工程师其实很少,但将不同领域的工程师组织为一个全栈的团队就容易的多。关于微服务和Kubenetes,您可以关注日的,分享的主要内容包括:
基于微服务架构的技术实践(顾伟,普元信息主任架构师)
Kubernetes在公有云上的实践分享(严伟,普元基础设施架构师)
以下为采访内容实录:CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域? 王文斌:大家好,我是王文斌,现在在普元公司任职。目前所做的工作是在普元新一代企业云平台中参与基础设施这一块,基础设施是新一代的底层支持模块,主要提供租户和微服务环境资源配额,包括租户可用资源的配额,以及基于租户资源的微服务在各种环境下的资源配额(如开发环境、测试环境、生产环境等等),服务发现,负载均衡,还提供运行容器的创建、销毁、调度、复制以及持久化卷管理等能力。可以看到这些能力基本和Kubenetes提供的能力匹配,因此在新一代里就是使用Kubenetes作为一个底层的容器调度平台来支撑上层微服务的部署运行。所以Kubenetes也是我现在比较关注的技术。CSDN:您能谈谈微服务(MicroServices)这个概念的诞生背景吗? 王文斌:微服务是由Martin Fowler提出的一种服务架构模式,和微服务相对应的,是被称为单一整体式架构。单一整体式架构是将所有的功能打包在一个WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat、JBoss、WebLogic)里,包含了DO/DAO、Service、UI等所有逻辑。 单一整体式架构的优点是:
开发简单直接,集中式管理
基本不会重复开发
功能都在本地,没有分布式的管理开销和调用开销
缺点就是:
开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断
代码维护难:代码功能耦合在一起,新人不知道何从下手
部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长
稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉
扩展性不够:无法满足高并发情况下的业务需求
在现在应用功能越来越多,要支撑的用户数量越来越大,需求变更响应也要求越来越及时,应用本身就会变得越来越复杂的背景下,微服务的目的是有效的拆分应用,实现敏捷开发和部署。CSDN:网上有人认为微服务算是一个分水岭,也是传统技术人士倒戈互联网,以互联网为代表的技术思想确立的里程碑。能否分享下您眼中的微服务,以及您对微服务的认识和理解。王文斌:微服务和单一整体式架构都有其优缺点以及适用场景,并非使用了微服务架构应用就一定比单一整体式架构的应用更好,而应该根据实际情况去选择。Martin Fowler和James Lewis根据开发社区的讨论总结:
集中式管制的后果之一就是出现标准单一技术平台的倾向。根据经验来讲,这种办法过于严苛——并非每个问题都是个钉子,可以用一个锤子(解决方案)来搞定。
然而,有时候使用集中管制的单一整体式架构仍然是有意义的。例如,Stack Exchange的工程师VP David Fullerton这样描述单一整体式架构:这是个让人感到乏味的架构,却能造就令人兴奋的结果。他曾这样描述自己的单一整体式架构:
其规模很适合我们。我们每个月要处理40亿个请求,峰值达到3000个/秒;每天处理8亿个SQL查询,峰值达到8500个/秒。
通过该例子可以看到单一整体式架构在应用规模没有大到一定需要采用微服务的架构时还是有其适用场景的,单一整体式架构在时间有限时,能提供非常清晰的路径,关键是可以尽快建立并运行起来。如果整支团队已经集中在一起,并取得同步,就能更有效地协作,继续完成任务。部署很简单,扩展起来也相对简单。团队只需要在大量虚拟机或独立主机上通过负载平衡器运行多个副本。一般来讲,团队最终会构建出单一整体式架构的核心,然后通过微服务手段构建可扩展组件。CSDN:微服务能够解决我们哪些的难点、挑战和痛点? 王文斌:像前面说的,随着现在应用功能越来越多,要支撑的用户数量越来越大,需求变更响应也要求越来越及时,应用本身就会变得越来越复杂,微服务可以可以有效的拆分应用,实现敏捷开发和部署。使用了微服务,无论是应用自身,还是团队磨合,都会有很严重的沟通问题。当然,微服务在文档、测试与解决不兼容问题的时间上肯定有着更高的阈值。
服务之间如何通信?
服务间的通行就是IPC(inter process communication),已经有很多成熟的方案。现在基本最通用的有两种方式:
同步调用:REST(JAX-RS)/RPC(Dubbo)
异步消息调用:Kafka/RabbitMQ
同步调用比较简单,一致性强,容易出调用问题,性能体验上也会差些;异步消息的方式在分布式系统中有特别广泛的应用,他既能减低调用服务之间的耦合,又能成为调用之间的缓冲,确保消息积压不会冲垮被调用方,同时能保证调用方的服务体验,继续干自己该干的活,不至于被后台性能拖慢。不过需要付出的代价是一致性的减弱,需要接受数据最终一致性。
这么多服务,怎么找?
这就是服务发现的问题了。一般有两类做法,也各有优缺点。基本都是通过ZK等类似技术做服务注册信息的分布式管理。当服务上线时,服务提供者将自己的服务信息注册到ZK(或类似框架),并通过心跳维持长链接,实时更新链接信息。服务调用者通过ZK寻址,根据可定制算法,找到一个服务,还可以将服务信息缓存在本地以提高性能。当服务下线时,ZK会发通知给服务客户端。
客户端做:优点是架构简单,扩展灵活,只对服务注册器依赖。缺点是客户端要维护所有调用服务的地址。
服务端做:优点是简单,所有服务对于调用方透明。
服务挂了怎么办?
当我们的系统是由一系列的服务调用链组成的时候,我们必须确保任一环节出问题都不至于影响整体链路。相应的手段有很多:
CSDN:与传统单块架构相比,微服务架构有哪些特点? 王文斌:微服务架构主要特点如下:
通过服务实现组件化
传统实现组件的方式是通过库(library),传统组件是和应用一起运行在进程中,组件的局部变化意味着整个应用的重新部署。通过服务来实现组件,意味着将应用拆散为一系列的服务运行在不同的进程中,那么单一服务的局部变化只需重新部署对应的服务进程。另外将服务作为组件可以更明确的定义出组件的边界,因为服务之间的调用是跨进程的,清晰的边界和职责定义是设计时必须考虑的。
按业务能力来划分服务与组织团队
任何设计系统的组织,最终产生的设计等同于组织之内、之间的沟通结构。传统开发方式中,我们将工程师按技能专长分层为前端层、中间层、数据层,前端对应的角色为UI、页面构建师等,中间层对应的角色为服务端业务开发工程师,数据层对应着DBA等角色。事实上传统应用设计架构的分层结构正反应了不同角色的沟通结构。而微服务架构的开发模式不同于传统方式,它将应用按业务能力来划分为不同的服务,每个服务都要求在对应业务领域的全栈(从前端到后端)软件实现,从界面到数据存储到外部沟通协作等等。因此团队的组织是跨功能的,包含实现业务所需的全面的技能。近年兴起的全栈工程师正是因为架构和开发模式的转变而出现,当然具备全栈的工程师其实很少,但将不同领域的工程师组织为一个全栈的团队就容易的多。
服务即产品
传统的应用开发都是基于项目模式的,开发团队根据一堆功能列表开发出一个软件应用并交付给客户后,该软件应用就进入维护模式,由另一个维护团队负责,开发团队的职责结束。而微服务架构的倡导者提议避免采用这种项目模式,更倾向于让开发团队负责整个产品的全部生命周期。Amazon对此提出了一个观点:
You buidl it, you run it.
开发团队对软件在生产环境的运行负全部责任,让服务的开发者与服务的使用者(客户)形成每天的交流反馈,来自直接客户端的反馈有助于开发者提升服务的质量。
智能终端与哑管道
微服务架构抛弃了ESB过度复杂的业务规则编排、消息路由等。服务作为智能终端,所有的业务智能逻辑在服务内部处理,而服务间的通信尽可能的轻量化,不添加任何额外的业务规则。
去中心统一化
传统应用中倾向采用统一的技术平台或产品来解决所有问题。不是每个问题都是钉子,也不是每个解决方案都是一个锤子。问题有其具体性,解决方案也应有其针对性。用最适合的技术方案去解决具体的问题,在大一统的传统应用中其实很难做到,而微服务的架构意味着,你可以针对不同的业务服务特征选择不同的技术平台或产品,有针对性的解决具体的业务问题。
基础设施自动化
单一进程的传统应用被拆分为一系列的多进程服务后,意味着开发、调试、测试、集成、监控和发布的复杂度都会相应增大。必须要有合适的自动化基础设施来支持微服务架构模式,否则开发、运维成本将大大增加。
Design for failure
正因为将服务独立在不同的进程中后,引入了额外的失败因素。任何时刻对服务的调用都可能因为服务方不可用导致失败,这就要求服务的消费方需要优雅的处理此类错误。这其实是相对传统应用开发方式的一个缺点,不过随着一些开源服务化框架的出现,对业务开发人员而言适当的屏蔽了类似的错误处理,不过开发人员依然需要知道对服务的调用是完全不同于进程内的方法或函数调用的。
一旦采用了微服务架构模式,那么在服务需要变更时我们要特别小心,服务提供者的变更可能引发服务消费者的兼容性破坏,时刻谨记保持服务契约(接口)的兼容性。对于解耦服务消费方和服务提供方,伯斯塔尔法则(Postel’s law)特别适用:
发送时要保守,接收时要开放(Be conservative in what you send, be liberal in what you accept.)。
按照伯斯塔尔法则的思想来设计实现服务调用时,发送的数据要更保守,意味着最小化的传送必要的信息,接收时更开放意味着要最大限度的容忍信息的兼容性。多余的信息不认识可以忽略,而不应该拒绝或抛出错误。
CSDN:微服务架构是否适用于互联网应用?为什么? 王文斌:微服务是比较适合互联网的,还是前面说的,随着应用功能越来越多,要支撑的用户数量越来越大,需求变更响应也要求越来越及时,应用本身就会变得越来越复杂,这时候会更需要采用微服务架构来拆分应用,实现敏捷开发和部署。CSDN:微服务架构是当前互联网业界的一个技术热点,各自公司都有计划开展微服务化体系建设,不过,一个微服务架构有哪些技术关注点?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型? 王文斌:一个微服务的架构需要的技术关注点大概包括:基础设施自动化、服务注册、服务发现、服务路由、服务熔断、集中配置、统一日志收集、服务监控等。可选的框架包括如OpenStack、Kubenetes、Swarm、Hystrix、SpringCloud、ELK、Kafka、RabbitMQ、Zabbix、cAdvisor等。对于如何选型,除了考虑自身对于这些框架的熟悉度以及可掌握度,还需要考虑的是:
项目运作模式
是被一家公司掌控还是松散的集体决策社区开发?
技术提供者的背景
提供者自己有没有大规模使用?
是从自身需求沉淀出来的产品还是按设想的需求开发的产品?
技术和技术提供者在产业链中的位置
与友商的合作/竞争关系
是众望所归还是单打独斗?
CSDN:微服务架构下Docker怎么玩?您有什么心得和体会可分享? 王文斌:微服务适很合作为一个Docker镜像进行打包部署,当微服务与容器结合使用时,微服务架构所具备的优势将被进一步放大。微服务鼓励软件开发者将整个软件解耦为较小的功能片段,并且这些功能片段能够应对外界的故障,这为我们带来了敏捷性和适应性。而Docker将我们的软件从底层的硬件中进行解耦,这为我们带来了在基于虚拟机的解决方案中见所未见的可移植性与速度。基于镜像可以做到微服务的快速部署、回退、版本升级,并且和Kubenetes结合时,可以保证微服务的高可用,以及做到服务的发现、路由,以及负载均衡。CSDN:微服务器骤然兴起,企业的接受也需要有过程,在市场开拓等方面,您如何考虑?王文斌:传统大型企业对于基于容器的微服务的新架构可能相对保守,而且他们的应用建设一般都是按周期划分,每个周期时间相对较长(一般10年左右),因此在没有很大的外力推动下(如上线周期要缩短、需要响应要更快等)不太会去重构已有应用。而且采用了新架构可能对于企业IT已有的组织结构也会有一定影响。所以可以先考虑把这种基于容器的微服务架构引入到应用的开发/测试环节中以提高开发/测试的效率,然后再逐步引入到非核心的应用的生产环境以确保稳定性,最后再推广到整个企业全面使用新架构。CSDN:能否简单介绍一个微服务架构实践的典型案例?
王文斌:普元的新一代企业云平台可以算是一个采用了微服务架构的平台,整个平台分成多个领域系统,如SCM、SRM、SEM等,这些领域系统就是一个个微服务。领域系统都是一个个独立的Java进程,系统之间采用REST接口调用。各系统是跑在了一个我们内部开发的称之为MSF的框架上,MSF负责了服务发现和路由、服务调用重试、服务熔断以及服务监控等功能。
王文斌,普元基础设施架构师,骨灰级软件工程师,代码高手,开源技术爱好者,容器技术专家。兵来将挡,水来土掩的全能架构师。

我要回帖

更多关于 单块效果器连接顺序 的文章

 

随机推荐