Go语言程序设计及实例 课件 第8章 Go语言微服务开发入门.pptx

Go语言程序设计及实例 课件 第8章 Go语言微服务开发入门.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第8章Go语言微服务开发入门微服务概述

01云计算与微服务1.云计算及其服务模式2.单体应用的弊端3.微服务的提出

云计算与微服务1.云计算及其服务模式自从2006年亚马逊证明了云是可行业务并率先推出自己的云服务平台后,众多行业巨头纷至沓来:2007年IBM推出BlueCloud计划;2008年谷歌发布Google应用引擎;2009年Heroku推出第一款公有云PaaS;2010年微软上线MicrosoftAzure(蓝天)云,与此同时RackspaceHosting和NASA联合推出OpenStack开源云计划;2011年Pivotal推出开源PaaSCloudFoundry;2013年Docker发布……云时代的大幕徐徐拉开。

云计算与微服务云服务提供商出租计算资源有3种基本模式,以满足不同用户的需求,如下。(1)IaaS(InfrastructureasaService,基础设施即服务):它是最底层的云服务,仅仅将基础的硬件资源(如服务器、存储设备等)以虚拟机技术整合起来租给用户使用,除此之外不提供任何对上层软件应用开发的支持。(2)PaaS(PlatformasaService,平台即服务):它除了具备底层完善的基础设施外还提供上层的软件部署平台,包括操作系统、必要的中间件和编程语言运行时(runtime)等,并对硬件和操作系统进行了统一抽象,使云用户(通常是互联网应用开发者)只须关注自己的业务逻辑实现,不需要考虑底层细节。(3)SaaS(SoftwareasaService,软件即服务):这种模式下,完全由提供商来为企业搭建信息化所需要的全部硬件基础设施、软件部署平台及应用程序(包括数据库),并负责从前期设计到开发实施直至后期维护的一系列任务,这等于是将系统的开发、部署和管理全都交给了第三方,用户不再过问任何技术问题,拿来即用,直接在上面开展自己的业务。

云计算与微服务以上3种模式的系统分层结构如图,图中以虚线分出了云服务提供商与用户各自需要负责运维和管理的界限。

云计算与微服务2.单体应用的弊端传统软件开发的基本对象是单个的应用程序(系统),也称为“单体应用”,虽然开发简单,但随着业务复杂度的上升,单体应用系统的规模也随之膨胀,程序变得难以理解和维护。即便是采用良好的分层设计和基于成熟框架(如JavaEE、SpringBoot等)开发的单体应用系统(其典型的架构通常如图)。

云计算与微服务3.微服务的提出为了克服单体应用开发方式的弊端,更好地适用云时代的业务需求,世界著名软件开发大师马丁·福勒(MartinFowler)于2014年首次提出了微服务的概念,其基本思想是将单体应用转化为多个可以独立开发、独立部署、独立运行和独立维护的服务,以应对更快的需求变更和更短的开发迭代周期。开发时先将明确定义的功能模块分成更小的服务,即“微服务”,每个微服务仅描述一个单一的小业务,系统中的每一个微服务都可以被单独部署,各微服务之间是松耦合的,这样就可以独立地对每个微服务进行升级、部署、扩展和重新启动等,从而实现在对系统功能进行频繁更新和迭代的同时也不会对最终用户的使用造成任何影响。

02微服务系统结构

微服务系统结构一个典型的微服务系统的结构如图。

微服务系统结构微服务系统相比传统分层架构的单体应用系统来说具备如下特点。(1)将原属于单体架构的业务层完全独立出来,从企业服务器迁移到云服务平台(俗称“上云”),并将该层的“服务”进一步细分为一个一个的“微服务”。(2)微服务遵循单一原则,能脱离开具体的操作系统和语言运行时,运行于容器之中,每个微服务都有属于自己的独立进程,使容器能够合理地为其分配所需的系统资源。目前使用最为普遍的容器是Docker。(3)云服务平台上运行着很多个Docker,通常会将从原来同一个单体应用(或功能模块)所分出的一组微服务及其运行环境置于一个Docker之中。(4)云上的容器都由专门的软件进行统一管理(编排),当前最为主流的容器编排软件是Kubernetes,实际应用中Docker+Kubernetes的组合是最佳搭档和标配。(5)同一或不同容器的微服务之间可以互相调用,微服务的调用采用基于标准RESTfulAPI的轻量通信协议,与具体的编程语言和操作系统平台均无关。(6)由于微服务的运行是独立的,它们之间的通信也是语言平台无关的,每一个微服务又可以被单独部署,这也就意味着可以将一个应用系统所属的各个微服务分别交由不同的团队乃至多个第三方去开发,真正实现软件系统开发过程的“并行化”。(7)微服务系统在本质上是一个开放的分布式网络应用系统,出于安全需要,前端(相当于原分层单体应用架构的表示层)必须通过特殊的API网关访问云上的微服务,网关会提供系统基础的授权、安全、

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档