微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计,第1张

基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发、部署、运维管理、持续开发持续集成的流程。平台提供基础设施、中间件、数据服务、云服务器等资源,开发人员只需要开发业务代码并提交到平台代码库,做一些必要的配置,系统会自动构建、部署,实现应用的敏捷开发、快速迭代。在系统架构上,PaaS云平台主要分为微服务架构、Docker容器技术、DveOps三部分,这篇文章重点介绍微服务架构的实施。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

实施微服务需要投入大量的技术力量来开发基础设施,这对很多公司来说显然是不现实的,别担心,业界已经有非常优秀的开源框架供我们参考使用。目前业界比较成熟的微服务框架有Netflix、Spring Cloud和阿里的Dubbo等。Spring Cloud是基于Spring Boot的一整套实现微服务的框架,它提供了开发微服务所需的组件,跟Spring Boot一起使用的话开发微服务架构的云服务会变的很方便。Spring Cloud包含很多子框架,其中Spring Cloud Netflix是其中的一套框架,在我们的微服务架构设计中,就使用了很多Spring Cloud Netflix框架的组件。Spring Cloud Netflix项目的时间还不长,相关的文档资料很少,博主当时研究这套框架啃了很多英文文档,简直痛苦不堪。对于刚开始接触这套框架的同学,要搭建一套微服务应用架构,可能会不知道如何下手,接下来介绍我们的微服务架构搭建过程以及 需要那些 框架或组件来支持微服务架构。

为了直接明了的展示微服务架构的组成及原理,画了一张系统架构图,如下:

从上图可以看出,微服务访问大致路径为:外部请求 → 负载均衡 → 服务网关(GateWay)→ 微服务 → 数据服务/消息服务。服务网关和微服务都会用到服务注册和发现来调用依赖的其他服务,各服务集群都能通过配置中心服务来获得配置信息。

服务网关(GateWay)

网关是外界系统(如:客户端浏览器、移动设备等)和企业内部系统之间的一道门,所有的客户端请求通过网关访问后台服务。为了应对高并发访问,服务网关以集群形式部署,这就意味着需要做负载均衡,我们采用了亚马逊EC2作为虚拟云服务器,采用ELB(Elastic Load Balancing)做负载均衡。EC2具有自动配置容量功能,当用户流量达到尖峰,EC2可以自动增加更多的容量以维持虚拟主机的性能。ELB弹性负载均衡,在多个实例间自动分配应用的传入流量。为了保证安全性,客户端请求需要使用https加密保护,这就需要我们进行SSL卸载,使用Nginx对加密请求进行卸载处理。外部请求经过ELB负载均衡后路由到GateWay集群中的某个GateWay服务,由GateWay服务转发到微服务。服务网关作为内部系统的边界,它有以下基本能力:

1、动态路由:动态的将请求路由到所需要的后端服务集群。虽然内部是复杂的分布式微服务网状结构,但是外部系统从网关看就像是一个整体服务,网关屏蔽了后端服务的复杂性。

2、限流和容错:为每种类型的请求分配容量,当请求数量超过阀值时抛掉外部请求,限制流量,保护后台服务不被大流量冲垮;党内部服务出现故障时直接在边界创建一些响应,集中做容错处理,而不是将请求转发到内部集群,保证用户良好的体验。

3、身份认证和安全性控制:对每个外部请求进行用户认证,拒绝没有通过认证的请求,还能通过访问模式分析,实现反爬虫功能。

4、监控:网关可以收集有意义的数据和统计,为后台服务优化提供数据支持。

5、访问日志:网关可以收集访问日志信息,比如访问的是哪个服务?处理过程(出现什么异常)和结果?花费多少时间?通过分析日志内容,对后台系统做进一步优化。

我们采用Spring Cloud Netflix框架的开源组件Zuul来实现网关服务。Zuul使用一系列不同类型的过滤器(Filter),通过重写过滤器,使我们能够灵活的实现网关(GateWay)的各种功能。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

服务注册与发现

由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就引入了服务注册与发现的问题,服务的提供方要注册报告服务地址,服务调用放要能发现目标服务。我们的微服务架构中使用了Eureka组件来实现服务的注册与发现。所有的微服务(通过配置Eureka服务信息)到Eureka服务器中进行注册,并定时发送心跳进行 健康 检查,Eureka默认配置是30秒发送一次心跳,表明服务仍然处于存活状态,发送心跳的时间间隔可以通过Eureka的配置参数自行配置,Eureka服务器在接收到服务实例的最后一次心跳后,需要等待90秒(默认配置90秒,可以通过配置参数进行修改)后,才认定服务已经死亡(即连续3次没有接收到心跳),在Eureka自我保护模式关闭的情况下会清除该服务的注册信息。所谓的自我保护模式是指,出现网络分区、Eureka在短时间内丢失过多的服务时,会进入自我保护模式,即一个服务长时间没有发送心跳,Eureka也不会将其删除。自我保护模式默认为开启,可以通过配置参数将其设置为关闭状态。

Eureka服务以集群的方式部署(在博主的另一篇文章中详细介绍了Eureka集群的部署方式),集群内的所有Eureka节点会定时自动同步微服务的注册信息,这样就能保证所有的Eureka服务注册信息保持一致。那么在Eureka集群里,Eureka节点是如何发现其他节点的呢?我们通过DNS服务器来建立所有Eureka节点的关联,在部署Eureka集群之外还需要搭建DNS服务器。

当网关服务转发外部请求或者是后台微服务之间相互调用时,会去Eureka服务器上查找目标服务的注册信息,发现目标服务并进行调用,这样就形成了服务注册与发现的整个流程。Eureka的配置参数数量很多,多达上百个,博主会在另外的文章里详细说明。

微服务部署

微服务是一系列职责单一、细粒度的服务,是将我们的业务进行拆分为独立的服务单元,伸缩性好,耦合度低,不同的微服务可以用不同的语言开发,每一个服务处理的单一的业务。微服务可以划分为前端服务(也叫边缘服务)和后端服务(也叫中间服务),前端服务是对后端服务做必要的聚合和剪裁后暴露给外部不同的设备(PC、Phone等),所有的服务启动时都会到Eureka服务器进行注册,服务之间会有错综复杂的依赖关系。当网关服务转发外部请求调用前端服务时,通过查询服务注册表就可以发现目标服务进行调用,前端服务调用后端服务时也是同样的道理,一次请求可能涉及到多个服务之间的相互调用。由于每个微服务都是以集群的形式部署,服务之间相互调用的时候需要做负载均衡,因此每个服务中都有一个LB组件用来实现负载均衡。

微服务以镜像的形式,运行在Docker容器中。Docker容器技术让我们的服务部署变得简单、高效。传统的部署方式,需要在每台服务器上安装运行环境,如果我们的服务器数量庞大,在每台服务器上安装运行环境将是一项无比繁重的工作,一旦运行环境发生改变,就不得不重新安装,这简直是灾难性的。而使用Docker容器技术,我们只需要将所需的基础镜像(jdk等)和微服务生成一个新的镜像,将这个最终的镜像部署在Docker容器中运行,这种方式简单、高效,能够快速部署服务。每个Docker容器中可以运行多个微服务,Docker容器以集群的方式部署,使用Docker Swarm对这些容器进行管理。我们创建一个镜像仓库用来存放所有的基础镜像以及生成的最终交付镜像,在镜像仓库中对所有镜像进行管理。

服务容错

微服务之间存在错综复杂的依赖关系,一次请求可能会依赖多个后端服务,在实际生产中这些服务可能会产生故障或者延迟,在一个高流量的系统中,一旦某个服务产生延迟,可能会在短时间内耗尽系统资源,将整个系统拖垮,因此一个服务如果不能对其故障进行隔离和容错,这本身就是灾难性的。我们的微服务架构中使用了Hystrix组件来进行容错处理。Hystrix是Netflix的一款开源组件,它通过熔断模式、隔离模式、回退(fallback)和限流等机制对服务进行弹性容错保护,保证系统的稳定性。

1、熔断模式:熔断模式原理类似于电路熔断器,当电路发生短路时,熔断器熔断,保护电路避免遭受灾难性损失。当服务异常或者大量延时,满足熔断条件时服务调用方会主动启动熔断,执行fallback逻辑直接返回,不会继续调用服务进一步拖垮系统。熔断器默认配置服务调用错误率阀值为50%,超过阀值将自动启动熔断模式。服务隔离一段时间以后,熔断器会进入半熔断状态,即允许少量请求进行尝试,如果仍然调用失败,则回到熔断状态,如果调用成功,则关闭熔断模式。

2、隔离模式:Hystrix默认采用线程隔离,不同的服务使用不同的线程池,彼此之间不受影响,当一个服务出现故障耗尽它的线程池资源,其他的服务正常运行不受影响,达到隔离的效果。例如我们通过andThreadPoolKey配置某个服务使用命名为TestThreadPool的线程池,实现与其他命名的线程池隔离。

3、回退(fallback):fallback机制其实是一种服务故障时的容错方式,原理类似Java中的异常处理。只需要继承HystixCommand并重写getFallBack()方法,在此方法中编写处理逻辑,比如可以直接抛异常(快速失败),可以返回空值或缺省值,也可以返回备份数据等。当服务调用出现异常时,会转向执行getFallBack()。有以下几种情况会触发fallback:

1)程序抛出非HystrixBadRequestExcepption异常,当抛出HystrixBadRequestExcepption异常时,调用程序可以捕获异常,没有触发fallback,当抛出其他异常时,会触发fallback;

2)程序运行超时;

3)熔断启动;

4)线程池已满。

4、限流: 限流是指对服务的并发访问量进行限制,设置单位时间内的并发数,超出限制的请求拒绝并fallback,防止后台服务被冲垮。

Hystix使用命令模式HystrixCommand包装依赖调用逻辑,这样相关的调用就自动处于Hystrix的弹性容错保护之下。调用程序需要继承HystrixCommand并将调用逻辑写在run()中,使用execute()(同步阻塞)或queue()(异步非阻塞)来触发执行run()。

动态配置中心

微服务有很多依赖配置,某些配置参数在服务运行期间可能还要动态修改,比如:根据访问流量动态调整熔断阀值。传统的实现信息配置的方法,比如放在xml、yml等配置文件中,和应用一起打包,每次修改都要重新提交代码、打包构建、生成新的镜像、重新启动服务,效率太低,这样显然是不合理的,因此我们需要搭建一个动态配置中心服务支持微服务动态配置。我们使用Spring Cloud的configserver服务帮我们实现动态配置中心的搭建。我们开发的微服务代码都存放在git服务器私有仓库里面,所有需要动态配置的配置文件存放在git服务器下的configserver(配置中心,也是一个微服务)服务中,部署到Docker容器中的微服务从git服务器动态读取配置文件的信息。当本地git仓库修改代码后push到git服务器仓库,git服务端hooks(post-receive,在服务端完成代码更新后会自动调用)自动检测是否有配置文件更新,如果有,git服务端通过消息队列给配置中心(configserver,一个部署在容器中的微服务)发消息,通知配置中心刷新对应的配置文件。这样微服务就能获取到最新的配置文件信息,实现动态配置。

以上这些框架或组件是支撑实施微服务架构的核心,在实际生产中,我们还会用到很多其他的组件,比如日志服务组件、消息服务组件等等,根据业务需要自行选择使用。在我们的微服务架构实施案例中,参考使用了很多Spring Cloud Netflix框架的开源组件,主要包括Zuul(服务网关)、Eureka(服务注册与发现)、Hystrix(服务容错)、Ribbon(客户端负载均衡)等。这些优秀的开源组件,为我们实施微服务架构提供了捷径。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

网络拓扑图:网络拓扑图介绍及在线制作

网络拓扑图就是指用传输媒体互联各种各样机器设备的物理布局,即哪种方法把互联网中的电子计算机等机器设备相互连接。拓扑绘画出云端服务器、服务中心的互联网配备和相互之间的联接。互联网的拓扑结构有很多种多样,关键有星形构造、环型构造、总线

网络拓扑图往往是由网络拓扑图软件绘制,网络拓扑图软件可以让使用者方便地对网络拓扑图进行添加,修改、保存、复制等操作。这些事情如果是由手工绘制来操作的话,会麻烦许多。但对于网络拓扑图软件来说,都不是问题。另外对于有条件上网的使用者来说,以软件形式存在的网络拓扑图无疑能够更方便地与他人共享。

星型拓扑结构

星型结构是最古老的一种连接方式,大家每天都使用的电话属于这种结构。星型结构是指各工作站以星型方式连接成网。网络有中央节点,其他节点(工作站、服务器)都与中央节点直接相连,这种结构以中央节点为中心,因此又称为集中式网络。

这种结构便于集中控制,因为端用户之间的通信必须经过中心站。由于这一特点,也带来了易于维护和安全等优点。端用户设备因为故障而停机时也不会影响其它端用户间的通信。同时它的网络延迟时间较小,传输误差较低。但这种结构非常不利的一点是,中心系统必须具有极高的可靠性,因为中心系统一旦损坏,整个系统便趋于瘫痪。对此中心系统通常采用双机热备份,以提高系统的可靠性。

环型网络拓扑结构

环型结构在LAN中使用较多。这种结构中的传输媒体从一个端用户到另一个端用户,直到将所有的端用户连成环型。数据在环路中沿着一个方向在各个节点间传输,信息从一个节点传到另一个节点。这种结构显而易见消除了端用户通信时对中心系统的依赖性。

环行结构的特点是:每个端用户都与两个相临的端用户相连,因而存在着点到点链路,但总是以单向方式操作,于是便有上游端用户和下游端用户之称;信息流在网中是沿着固定方向流动的,两个节点仅有一条道路,故简化了路径选择的控制;环路上各节点都是自举控制,故控制软件简单;由于信息源在环路中是串行地穿过各个节点,当环中节点过多时,势必影响信息传输速率,使网络的响应时间延长;环路是封闭的,不便于扩充;可靠性低,一个节点故障,将会造成全网瘫痪;维护难,对分支节点故障定位较难。

总线拓扑结构

总线结构是使用同一媒体或电缆连接所有端用户的一种方式,也就是说,连接端用户的物理媒体由所有设备共享,各工作站地位平等,无中心节点控制,公用总线上的信息多以基带形式串行传递,其传递方向总是从发送信息的节点开始向两端扩散,如同广播电台发射的信息一样,因此又称广播式计算机网络。各节点在接受信息时都进行地址检查,看是否与自己的工作站地址相符,相符则接收网上的信息。

使用这种结构必须解决的一个问题是确保端用户使用媒体发送数据时不能出现冲突。在点到点链路配置时,这是相当简单的。如果这条链路是半双工操作,只需使用很简单的机制便可保证两个端用户轮流工作。在一点到多点方式中,对线路的访问依靠控制端的探询来确定。然而,在LAN环境下,由于所有数据站都是平等的,不能采取上述机制。对此,研究了一种在总线共享型网络使用的媒体访问方法:带有碰撞检测的载波侦听多路访问,英文缩写成CSMA/CD。

这种结构具有费用低、数据端用户入网灵活、站点或某个端用户失效不影响其它站点或端用户通信的优点。缺点是一次仅能一个端用户发送数据,其它端用户必须等待到获得发送权;媒体访问获取机制较复杂;维护难,分支节点故障查找难。尽管有上述一些缺点,但由于布线要求简单,扩充容易,端用户失效、增删不影响全网工作,所以是LAN技术中使用最普遍的一种。

分布式拓扑结构

分布式结构的网络是将分布在不同地点的计算机通过线路互连起来的一种网络形式。

分布式结构的网络具有如下特点:由于采用分散控制,即使整个网络中的某个局部出现故障,也不会影响全网的操作,因而具有很高的可靠性;网中的路径选择最短路径算法,故网上延迟时间少,传输速率高,但控制复杂;各个节点间均可以直接建立数据链路,信息流程最短;便于全网范围内的资源共享。缺点为连接线路用电缆长,造价高;网络管理软件复杂;报文分组交换、路径选择、流向控制复杂;在一般局域网中不采用这种结构。

树型拓扑结构

树型结构是分级的集中控制式网络,与星型相比,它的通信线路总长度短,成本较低,节点易于扩充,寻找路径比较方便,但除了叶节点及其相连的线路外,任一节点或其相连的线路故障都会使系统受到影响。

网状拓扑结构

在网状拓扑结构中,网络的每台设备之间均有点到点的链路连接,这种连接不经济,只有每个站点都要频繁发送信息时才使用这种方法。它的安装也复杂,但系统可靠性高,容错能力强。有时也称为分布式结构。

蜂窝拓扑结构

蜂窝拓扑结构是无线局域网中常用的结构。它以无线传输介质(微波、卫星、红外等)点到点和多点传输为特征,是一种无线网,适用于城市网、校园网、企业网。

混合拓扑结构

混合拓扑结构是由星型结构或环型结构和总线型结构结合在一起的网络结构,这样的拓扑结构更能满足较大网络的拓展,解决星型网络在传输距离上的局限,而同时又解决了总线型网络在连接用户数量上的限制。

混合拓扑的优点:应用相当广泛,它解决了星型和总线型拓扑结构的不足,满足了大公司组网的实际需求。扩展相当灵活。速度较快:因为其骨干网采用高速的同轴电缆或光缆,所以整个网络在速度上应不受太多的限制。缺点是:由于仍采用广播式的消息传送方式,所以在总线长度和节点数量上也会受到限制。同样具有总线型网络结构的网络速率会随着用户的增多而下降的弱点。较难维护,这主要受到总线型网络拓扑结构的制约,如果总线断,则整个网络也就瘫痪了。

创建网络拓扑图的方式有很多,若选择在线绘制网络拓扑图,推荐使用在线制图网站:freedgoDesign。freedgoDesign,其访问地址为:

。freedgodesign在线制图网站是一款多类型的图形图表设计软件,软件内容自带丰富的几何图形模板,可以用于绘制专业的网络拓扑图,泳道图、影响图、SDL图、审批图、会计网络拓扑图等,提供丰富的网络图例子,上手更轻松

在具体的网络拓扑图中需要把业务逻辑分解成更小、更具体的步骤。然后,考虑流程中任何可能的异常,如果是,为备选路径添加决策节点。

继续重复这个过程,直到你达到了每个人都能完全理解的简单步骤。

现在,一起开看如何使用FreedgoDesign制好看的网络拓扑图。

步骤一:

访问

,先注册一个用户,注册成功后,登录到首页

步骤二:

访问

/draw_,进入制图页面,或者从首页页面顶部菜单点击开始制作。

进入制图页面后点击文件->从类型中新建->网络架构->网络图

或者点击图例,在图例中找到网络架构->网络图,选择一个类似的图例进行改动

步骤三:

从左侧符号栏拖拽合适的几何图形至画布,松手后,椭圆图形就被固定画布上,双击几何图形,还可输入文字。当鼠标放置在图形上时,

图形四周会显示“小三角形”,是为了方便用户点击后能够快速生成新的图形。

步骤四:

软件提供多种连接样式,在该网络拓扑图中,可以选择普通的直角连接线。在连接线上,还可以输入文字做进一步的说明。

步骤五:

网络拓扑图制作工具拥有一套功能丰富的样式,用户可以对封闭图形进行单色填充、渐变填充、文本大小位置颜色调整。经过图案填充的网络拓扑图,颜值提升了不少。

步骤六:

按照绘图要求,一步一步的地完成网络拓扑图的绘制。最终完成了整幅的绘制任务。

[注]:在线网络拓扑图设计如何在线制图网络拓扑图网络拓扑部署制作怎么画网络拓扑图网络拓扑工具物理网络部署图网络拓扑图与部署架构图基本网络图制作网络拓扑图制作

ppt里面如何做地图

你好

平时制作PPT的时候,我们经常会用到一些地区的数据,用文字来表述的话总觉得缺了点什么,不够直观,如果可以把文字转换成地图显示出来,那么相信一定可以带来很好的视觉效果。

例如下方的订单数量区域统计图:

那么这样的动态地图要怎么在PPT里面做出来呢今天就来教大家方法。

动态地图

1图表秀

首先我们进入一个图表秀的网站,这是一个好用的在线图表制作网站,使用它就可以在PPT里面实现各种酷炫的动态图表效果哟!

2添加加载项

想要添加动态地图,首先我们需要在PPT里面添加加载项,点击插入-加载项-应用商店,然后搜索WebViewer添加,接着调整网页浏览框的位置和大小。

3编辑数据

点击新建图表,选择地图里面自己喜欢的样式,然后点击编辑数据。

这时候你可以修改里面的省份和相应的指标,或者也可以直接导入Excel文件进行匹配。

同时你可以对地图进行一些属性设置,还可以点击配色方案选择自己喜欢的配色。

4复制链接

完成后点击保存,然后再点击分享会生成一个链接,这时候点击复制链接。

回到PPT界面,把链接复制到桌面上,记得把前面的

它就类似一个终端,消耗CPU资源和内存的软件肯定不能装的,

能装的大概只有一些辅助的软件,比如网络、安全管理,显示设置,触空设备等。

华为云电脑简介:

华为云电脑

是华为终端依托于华为公有云平台和桌面虚拟化技术,提供给用户一个便携的可替代传统电脑的业务。

区别于华为终端本地PC模式,华为云电脑

显示在你面前的Windows桌面并不是真实的本地电脑,而是通过网络连接到远端公有云服务器上虚拟机。它能够释放手机硬件资源,提供更强的性能,更灵活的规格,并兼容Windows生态下的所有应用软件。

等5g时代到来,手机上的云游戏看来会是一个大风口啊……手机就是一台主机的屏幕英伟达的云游戏听说体验已经不错了,到时在手机上玩刺客信条巫师不是梦啊

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情