《Go语言高并发与微服务实战》朱荣鑫,黄迪璇,张天编者|(epub+azw3+mobi+pdf)电子书下载

图书名称:《Go语言高并发与微服务实战》

【作 者】朱荣鑫,黄迪璇,张天编者
【丛书名】Go语言与云原生系列
【页 数】 390
【出版社】 北京:中国铁道出版社 , 2020.03
【ISBN号】978-7-113-26662-2
【价 格】89.00
【分 类】程序语言-程序设计
【参考文献】 朱荣鑫,黄迪璇,张天编者. Go语言高并发与微服务实战. 北京:中国铁道出版社, 2020.03.

图书封面:

图书目录:

《Go语言高并发与微服务实战》内容提要:

本书首先将会对Go语言的基本语法进行简要介绍,同时对GoWeb基础进行介绍,在以上的基础,重点结合流行的微服务框架go-micro讲解使用Go语言如何构建微服务架构体系,除此之外,本书对于高并发的具体应用进行了细致地阐述。

《Go语言高并发与微服务实战》内容试读

第1章云原生架构

在云原生架构之前(即传统非云原生应用),底层平台负责向上提供基本运行资源,而应用需要满足业务需求和非业务需求。为了更好地使代码复用,通用性好的非业务需

求的实现,往往会以类库和开发框架的方式提供。在SOA、微服务时代,部分功能会以

后端服务的方式存在,在应用中被简化为对其客户端的调用代码,然后应用将这些功能连同自身的业务实现代码一起打包。而云的出现,可以在提供各种资源之外,还提供各种能力(如基础设施,以及基础设施的中间件等),从而帮助应用,使得应用可以专注于业务需求的实现。

随着云原生技术理念在行业内进一步实践发展,云原生架构完成了T架构在云计算

时代的进化升级。以CI/CD、DevOps和微服务架构为代表的云原生技术,以其高效稳定、快速响应的特点引领企业的业务发展,帮助企业构建更加适用于云上的应用服务。对企

业而言,新旧T架构的转型与企业数字化的迫切需求也为云原生技术提供了很好的契机,

云原生技术在行业的应用持续深化。

本章将会围绕云原生的相关概念,首先介绍云计算的历史,然后介绍云原生出现的背景、背后的诉求以及云原生的定义,最后介绍云原生基础架构中的关键技术。

1.1云计算的历史

在介绍云原生之前,先看看过去几十年间,云计算领域的发展演进历程。总的来说,云计算的发展分为三个阶段:虚拟化的出现、虚拟化在云计算中的应用以及容器化的出现。云计算的高速发展,则集中在近十几年。

1.1.1云计算的基础:虚拟化技术

云计算的历史,事实上需要追溯到60多年前,与计算机发展史相伴而生,直到2000年前后,虚拟化技术才逐渐发展成熟,如图1-1所示。

·1955年,MIT的John McCarthy(人工智能之父、1971年图灵奖获得者)提出了通过time-sharing(分时)技术来满足多人同时使用一台计算机的诉求。

。l959年6月,Christopher Strachey在国际信息处理大会上发表了《Time Sharing in

Large Fast Computer》论文,提出了虚拟化概念。该文被公认为虚拟化技术的最早论述。虚拟化是云计算基础架构的基石。

2G0语言高并发与微服务实战

分时理论

分时共享

写引入x86

摄布

Xen 3.0

提出

系镜

Rald技术

虚拟技术

VPN标淮

发布

发布

1955195919651969197819901998199920002002200520062009

提出座慰

ARPA

网格计侧

VMWare

化豪念

NET出现

工作站

AWS上线

GVM生

图1-1云原生的历史

。1965年8月,IBM推出System/360 Model67和TSS分时共享系统(Time Sharing

System,通过虚拟机监视器(Virtual Machine Monitor,VMM)虚拟所有的硬件接口,允许多个用户共享同一高性能计算设备的货源,也就是最原始的虚拟机技术。。20世纪60年代中期,美国计算机科学家JCR Licklider提出计算机互联系统(aninterconnected system of computers)的想法。在JCR Licklider革命性创意的帮助下,

Bob Taylor和Larry Roberts开发了互联网的前身ARPANET(Advanced Research

Projects Agency Network),允许不同物理位置的计算机进行网络连接和资源共享。。l978年,IBM获得了独立磁盘冗余阵列(Redundant Arrays of Independent Disks,

RAD)概念的专利。该专利将物理设备组合为池,然后从池中切出一组逻辑单元

号(Logical Unit Number,LUN)并将其提供给主机使用。虽然直到I988年IBM才与加利福尼亚州立大学伯克利分校联合开发了该技术的第一个实用版本,但该专利第1次将虚拟化技术引入存储之中。

自此,云计算所依赖的底层技术全部出现了:操作系统,管理物理计算资源:虚拟化技术,把资源分给多人同时使用:互联网,远程接入。

自从计算机被发明以来,人们对计算的需求便没停止过。在这之后的十余年中,计算机商业一片繁荣,大型机、小型机、X86服务器相继出现,而Utility Computing(公共计算,John McCarthy于1961年提出)进入了休眠期。

·1990年,Utility Computing概念复苏,又叫网格计算(Grid Computing),其目标是把大量机器整合成一个虚拟的超级机器,给分布在世界各地的人们使用,总体而言还是公共计算服务的范畴。

·1998年,VMware成立并首次引入X86的虚拟技术,通过运行在Windows NT上的VMware来启动Windows95。

·1999年,VMware推出可在X86平台上流畅运行的第一款VMware Workstation,从此虚拟化技术走下了只在大型机上运行的神话。之后,研发人员和发烧友开始

第1章云原生架构3

在普通PC和工作站上大量使用该虚拟化解决方案。

。20O0年,IEEE颁布了虚拟专用网(Virtual Private Network,VPN)标准草案,从而使得私有网络可以跨公网进行建立。

。2002年,Amazon上线AWS(Amazon.com Web Service),本意是把自己的商品目录以SOAP接口的方式开放给开发者。IBM在自己的E-Business基础上,综合网络服务(Web Service)、开放标准(Open Standard)、Grid Computing,进一步提出

E-business on-demand的概念。

·2005年,Xen3.0发布,该版本可以在32位服务器上运行,同时该版本开始正式支持Intel的VT技术和IA64架构,从而使得Xen虚拟机可以运行完全没有修改的操作系统,该版本是Xen真正意义上可用的版本

·2006年10月,以色列的创业公司Qumranet在完成了虚拟化Hypervisor基本功能、

动态迁移以及主要的性能优化之后,正式对外宣布了KVM的诞生。同年10月,

KVM模块的源代码被正式接纳进入Linux Kernel,.成为内核源代码的一部分。。20o9年4月,VMware推出业界首款云操作系统VMware vSphere。

在2000年前后虚拟化技术成熟之前,市场处于物理机时代。当时如果要启用一个新的应用,需要购买一台或者一个机架的新服务器。云计算的重要里程碑之一是在2001年,VMware带来的可用于X86的虚拟化计划。通过虚拟机,可以在同一台物理机器上运行多个虚拟机,这也意味着虚拟化技术可以降低服务器的数量,而且速度和弹性也远超物理机。

1.1.2基于虚拟机的云计算

在虚拟化技术成熟之后,云计算市场才真正出现。一般认为,亚马逊AWS在2006

年公开发布S3存储服务、SQS消息队列及EC2虚拟机服务,正式宣告了现代云计算的到

来。2008年,AWS证明了云是可行业务之后,越来越多的行业巨头和玩家注意到这块市

场并开始入局,因此从行业视角来看,2008年可以作为另一个意义上的云计算元年。AWS

是目前商业上最成功的云计算公司之一,也是业界的一个标杆。

。2006年,AWS推出首批云产品Simple Storage Service(S3)和Elastic Compute

Cloud(EC2),使企业可以利用AWS的基础设施构建自己的应用程序。。2007年,IBM发布云计算商业解决方案,推出Blue Cloud计划。

·2008年,Google App Engine发布(Google应用引擎),是Google管理的数据中心中用于Web应用程序开发和托管的平台。

。2009年,Heroku推出第一款公有云PaaS(Platform-as-a-Service)。

。2010年,微软发布Microsoft Azure(意为蓝天)云平台服务。Rackspace Hosting和NASA联合推出了一项名为OpenStack的开源云软件计划。

4G0语言高并发与微服务实战

。2011年,Pivotal推出了开源版PaaS Cloud Foundry,作为Heroku PaaS的开源替代品,并于2014年底推出了Cloud Foundry Foundation。

。2013年,Docker发布,其使用了LXC,同时封装了一些新的功能,是一种成功的组合式创新。

·2014年,AWS推出Lambda,允许在AWS中运行代码而无需配置或管理服务器,即Faas/Serverless。FaaS可以简单理解为功能服务化(Function as a Service)。FaaS提供了一种比微服务更加服务碎片化的软件架构范式。FaaS可以让研发只需要关注业务代码逻辑,而不再关注技术架构。

在这期间,云计算的多个重要里程碑:IaaS、PaaS、SaaS、开源PaaS和FaaS相继出现。云服务提供商出租计算资源有3种模式,满足云服务消费者的不同需求,分别是IaaS,

SaaS和PaaS。

(l)IaaS(Infrastructure as a Service),即基础设施即服务,IaaS是云服务的最底层,主要提供一些基础资源。

(2)SaaS(Software-as-a-service)软件服务,提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施,后期的维护等一系列服务。SaaS是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。

(3)PaaS:平台服务,Platform-as-a-service是软件即服务(Software as a Service,SaaS)的延伸。PaaS提供软件部署平台(runtime),抽象硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。

需要注意的是,云服务提供商只负责出租层及以下各层的部署、运维和管理,而租户自己负责更上层次的部署和管理,两者负责的“逻辑层”加起来刚好就是一个完整的

四层T系统,如图1-2所示。

2006~2009年,云服务尚处于推广阶段,只有少数大公司有基础和资本在做。2008年金融危机爆发后,Salesforce公司在2009年初公布的2008财年年度报告显示Salesforce

公司云服务收入超过10亿美元。当AWS证明了云是可行业务之后,越来越多的行业巨

头和玩家注意到这块市场并开始入局。于是在2009~2014年,世界级的供应商都无一例外地参与到了云市场的竞争中。IBM、VMware、.微软和AT&T等公司作为第二梯队出现。

他们大都是传统的T企业,由于云计算的出现不得不选择转型。亚马逊的商业成功也带

动了中国的互联网公司对云计算的投入,众所周知,国内的云计算标杆阿里云也是从2008年开始筹办和起步,云计算的时代大幕逐步拉开,开始形成一个真正的多元化市场,并随着众多巨头的加入开始良性竞争。阿里云、腾讯云、华为云等在中国市场逐渐成长起来,并开始向海外探索。

第1章云原生架构5

传统T

TaaS

PaaS

SaaS

054年,

年e年年年40g小s

应用

应用程序

数据

运行

运行

中间

中间

中间件

中间件

换作系饰

操作系统

操作系统

虚拟化

虚拟化

虚拟化

的务

服务器

服务器

服务器

行储

存储

存储

存储

网络

网络

网络

图1-2四层T系统

1.1.3容器的横空出世和容器编排大战

在上一小节提到了PaaS,PaaS的开源产品Docker对云计算领域产生了深远的影响,从虚拟机到容器,整个云计算市场发生了一次重大变革。

容器化本质上是虚拟化的改进版本,这种技术允许多个应用程序驻留在同一个服务器中。两者之间的主要区别在于虚拟化在硬件级别分离应用程序,而容器化则在操作系统级别分离硬件程序。这意味着虚拟化使用一种称为Hypervisor的硬件,将应用程序从物理上分离出来,并为每个应用程序提供自己的操作系统,而容器化则将它们与软件分离开来,并允许它们共享服务器的操作系统。这消除了虚拟机低效利用资源的问题,降低了存储成本并提高了可扩展性和可移植性。基于容器方法的一个缺点是安全性,因为应用程序在服务器内没有被物理隔离。

Docker自2013年发布开始,就带动着容器技术的热度。其实在Docker之前,已经有LXC(Linux Container),但是LXC更多侧重于容器运行环境的资源隔离和限制(类似

于一个进程沙箱),而没有涉及容器镜像打包技术,这使得LXC并没有得到普及,LXC

是Docker最初使用的具体内核功能实现。Docker在LXC的基础上更进一步,规范并建设了一套镜像打包和运行机制,将应用程序和其所依赖的文件打包到同一个镜像文件中,从而使其在转移到任何运行Docker的机器中时都可以运行,并能保证在任何机器中该应用程序执行的环境都是一样的。Docker所提出的“Build,Ship and Run”的概念迅速得到了认可,Docker也逐渐成为容器技术的领导者,甚至让很多人误认为容器就是Docker。.

6G0语言高并发与微服务实战

随着Kubernetes的成熟,以及它和Docker的融合,基于容器技术的容器编排市场,则经历了Mesos、Swarm、Kubernetes三家的一场史诗大战,Kubernetes最终赢得了容器编排的胜利,云计算进入Kubernetes时代。PaaS技术的主流路线逐渐过渡到Kubernetes+

Docker,.并于2018年左右开始占据统治地位,如图1-3所示。

1-3 Docker +Kubernetes

2015年7月,Google联合Linux基金会成立了CNCF组织如图1-4所示,紧接着就把Kubernetes 1.0版本的源代码捐献给CNCF。Kubernetes成为CNCF管理的首个开源项目。

CLOUD NATIVE

COMPUTING FOUNDATION

图1-4CNCF

CNCF力推Cloud Native,完全基于开源软件技术栈,Cloud Native的重要理念是:以微服务的方式部署应用,每个应用都打包为自己的容器并动态编排这些容器以优化资源利用。2018年3月,Kubernetes从CNCF毕业,成为CNCF第一个毕业项目。在容器编排大战期间,以Kubernetes为核心的CNCF Cloud Native生态系统也得以迅猛发展,云原生成为云计算市场的技术新热点。

1.1.4云计算演进总结

云计算背后的理念由来已久,虽然目前流行的云计算形式直到20世纪90年代末才开始兴起,但是在20世纪60年代,当大型机开始流行起来时,共享计算的概念就开始出现。大型计算机被发明为一个可以从“dumb”终端访问的集中式集线器。这些终端依靠主机进行存储和计算。尽管大型机计算和云计算之间存在明显的差异(特别是大型计算机不能通过互联网访问并托管在一个物理位置),但是大型机是第一种将信息和应用程序存储在中央集线器中的计算方法,并且可以远程访问。这为未来的云基础架构提供了

···试读结束···

阅读剩余
THE END