精华内容
下载资源
问答
  • 微服务技术架构.pptx

    2021-10-11 10:49:08
    微服务技术架构.pptx
  • 微服务技术架构设计

    2019-04-20 01:45:45
    微服务技术架构设计 如何进行架构设计 最小化产品原则 过度的架构设计 微服务技术架构设计 微服务技术架构设计 如何进行架构设计 最小化产品原则 过度的架构设计 微服务技术架构设计...

    目录

    微服务技术架构设计

    如何进行架构设计

    最小化产品原则

    过度的架构设计

    微服务技术架构设计


     

     

    微服务技术架构设计

     

    如何进行架构设计

     

    最小化产品原则

     

     

    过度的架构设计

     

     

    微服务技术架构设计

     

     

     

     

     


    ==============================
    QQ群:143522604
    群里有相关资源
    欢迎和大家一起学习、交流、提升!
    ==============================

     

     

     

     

     

     

     

     

    展开全文
  • 详解微服务技术架构.docx
  • 揭秘微服务技术架构.docx
  • 微服务技术架构详解.docx
  • 微服务技术架构实战.pdf
  • 技术创新变革未来 微服务技术架构分析;服务调度 服务注册发现负载均衡 服务治理 超时限流熔断降级 服务监控 分布式调用链指标日志 基础设施 配置中心API网关;Service Mesh 的真实好处 跨语言接入零成本接入 升级力新...
  • 微服务技术架构实战;背景 系统架构 持续集成/持续发布 典型问题剖析 未来规划;背景;业务背景;单体架构;技术挑战;系统架构;技术选型;微服务1.0架构核心;微服务1.0架构不足;微服务2.0架构核心; 架 构 总 览 ;架构...
  • 企业微服务技术架构介绍.pptx
  • 企业微服务技术架构介绍.pdf
  • 企业微服务技术架构演进方案.pdf
  • 企业微服务技术架构演进方案.docx
  • 企业微服务技术架构实践参考.pdf
  • 亿级请求微服务技术架构.pdf
  • Netflix微服务技术架构反向工程.docx
  • 微服务技术架构

    千次阅读 2018-10-03 10:26:20
    “ 微服务(MicroServices)架构是当前互联网业界的一个技术热点,大家是否明白一个微服务架构有哪些技术关注点(technical concerns)?需要哪些基础框架或组件来支持...但是并没有对微服务技术有一个深入的介绍,今天...

     微服务(MicroServices)架构是当前互联网业界的一个技术热点,大家是否明白一个微服务架构有哪些技术关注点(technical concerns)?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型呢?

     

     

     

    在公众号中专门有微服务菜单栏,里面讲解了Spring boot和Spring Cloud的一些入门案例。但是并没有对微服务技术有一个深入的介绍,今天我们就来看一下微服务的技术架构。

     

    一:服务注册和发现,负载均衡和健康检查

    微服务架构和单块架构(将整个应用作为一个整体,部署在同一个Web 容器,如Tomcat 或者Jetty 中)不同,是因为微服务架构是由一系列职责单一的细粒度服务构成的分布式网状结构,服务之间通过轻量机制进行通信。但是你是否想过服务之间通过轻量机制进行通信必然引入服务注册和发现的问题,服务提供方要注册通告服务地址,服务的调用方要能发现目标服务。

    服务的调用方要能发现目标服务,同时服务提供方一般以集群方式提供服务,也就引入了负载均衡和健康检查问题。根据负载均衡LB所在位置的不同,目前主要的服务注册、发现和负载均衡方案有三种:

     

    第一种是集中式LB方案,如下图,在服务消费者和服务提供者之间有一个独立的LB,LB通常是专门的硬件设备如F5,或者基于软件如LVS,HAproxy等实现。LB上有所有服务的地址映射表,通常由运维配置注册,当服务消费方调用某个目标服务时,它向LB发起请求,由LB以某种策略(比如Round-Robin)做负载均衡后将请求转发到目标服务。LB一般具备健康检查能力,能自动摘除不健康的服务实例。服务消费方如何发现LB呢?通常的做法是通过DNS,运维人员为服务配置一个DNS域名,这个域名指向LB。

     

     

    集中式LB方案实现简单,在LB上也容易做集中式的访问控制,这一方案目前还是业界主流。集中式LB的主要问题是单点问题,所有服务调用流量都经过LB,当服务数量和调用量大的时候,LB容易成为瓶颈,且一旦LB发生故障对整个系统的影响是灾难性的。另外,LB在服务消费方和服务提供方之间增加了一跳(hop),有一定性能开销。

     

    第二种是进程内LB方案,针对集中式LB的不足,进程内LB方案将LB的功能以库的形式集成到服务消费方进程里头,该方案也被称为软负载(Soft Load Balancing)或者客户端负载方案,下图展示了这种方案的工作原理。这一方案需要一个服务注册表(Service Registry)配合支持服务自注册和自发现,服务提供方启动时,首先将服务地址注册到服务注册表(同时定期报心跳到服务注册表以表明服务的存活状态,相当于健康检查),服务消费方要访问某个服务时,它通过内置的LB组件向服务注册表查询(同时缓存并定期刷新)目标服务地址列表,然后以某种负载均衡策略选择一个目标服务地址,最后向目标服务发起请求。这一方案对服务注册表的可用性(Availability)要求很高,一般采用能满足高可用分布式一致的组件(例如Zookeeper, Consul, Etcd等)来实现。

    进程内LB方案是一种分布式方案,LB和服务发现能力被分散到每一个服务消费者的进程内部,同时服务消费方和服务提供方之间是直接调用,没有额外开销,性能比较好。但是,该方案以客户库(Client Library)的方式集成到服务调用方进程里头,如果企业内有多种不同的语言栈,就要配合开发多种不同的客户端,有一定的研发和维护成本。另外,一旦客户端跟随服务调用方发布到生产环境中,后续如果要对客户库进行升级,势必要求服务调用方修改代码并重新发布,所以该方案的升级推广有不小的阻力。

    进程内LB的案例是Netflix的开源服务框架,对应的组件分别是:Eureka服务注册表,Karyon服务端框架支持服务自注册和健康检查,Ribbon客户端框架支持服务自发现和软路由。另外,阿里开源的服务框架Dubbo也是采用类似机制。

    第三种是主机独立LB进程方案,该方案是针对第二种方案的不足而提出的一种折中方案,原理和第二种方案基本类似,不同之处是,他将LB和服务发现功能从进程内移出来,变成主机上的一个独立进程,主机上的一个或者多个服务要访问目标服务时,他们都通过同一主机上的独立LB进程做服务发现和负载均衡,见下图Fig 3。

    该方案也是一种分布式方案,没有单点问题,一个LB进程挂了只影响该主机上的服务调用方,性能好,同时,该方案还简化了服务调用方,不需要为不同语言开发客户库,LB的升级不需要服务调用方改代码。该方案的不足是部署较复杂,环节多,出错调试排查问题不方便。

    该方案的典型案例是Airbnb的SmartStack服务发现框架,对应组件分别是:Zookeeper作为服务注册表,Nerve独立进程负责服务注册和健康检查,Synapse/HAproxy独立进程负责服务发现和负载均衡。Google最新推出的基于容器的PaaS平台Kubernetes,其内部服务发现采用类似的机制。

     

    二:服务前端路由

    微服务除了内部相互之间调用和通信之外,最终要以某种方式暴露出去,才能让外界系统(例如客户的浏览器、移动设备等等)访问到,这就涉及服务的前端路由,对应的组件是服务网关(Service Gateway),见下图,网关是连接企业内部和外部系统的一道门,有如下关键作用:

    1.服务反向路由,网关要负责将外部请求反向路由到内部具体的微服务,这样虽然企业内部是复杂的分布式微服务结构,但是外部系统从网关上看到的就像是一个统一的完整服务,网关屏蔽了后台服务的复杂性,同时也屏蔽了后台服务的升级和变化。

    2.安全认证和防爬虫,所有外部请求必须经过网关,网关可以集中对访问进行安全控制,比如用户认证和授权,同时还可以分析访问模式实现防爬虫功能,网关是连接企业内外系统的安全之门。

    3.限流和容错,在流量高峰期,网关可以限制流量,保护后台系统不被大流量冲垮,在内部系统出现故障时,网关可以集中做容错,保持外部良好的用户体验。

    4.监控,网关可以集中监控访问量,调用延迟,错误计数和访问模式,为后端的性能优化或者扩容提供数据支持。

    5.日志,网关可以收集所有的访问日志,进入后台系统做进一步分析。

     

    除以上基本能力外,网关还可以实现线上引流,线上压测,线上调试(Surgical debugging),金丝雀测试(Canary Testing),数据中心双活(Active-Active HA)等高级功能。

    网关通常工作在7层,有一定的计算逻辑,一般以集群方式部署,前置LB进行负载均衡。

    开源的网关组件有Netflix的Zuul,特点是动态可热部署的过滤器(filter)机制,其它如HAproxy,Nginx等都可以扩展作为网关使用。

    在介绍过服务注册表和网关等组件之后,我们可以通过一个简化的微服务架构图(Fig 5)来更加直观地展示整个微服务体系内的服务注册发现和路由机制,该图假定采用进程内LB服务发现和负载均衡机制。在下图的微服务架构中,服务简化为两层,后端通用服务(也称中间层服务Middle Tier Service)和前端服务(也称边缘服务Edge Service,前端服务的作用是对后端服务做必要的聚合和裁剪后暴露给外部不同的设备,如PC,Pad或者Phone)。后端服务启动时会将地址信息注册到服务注册表,前端服务通过查询服务注册表就可以发现然后调用后端服务;前端服务启动时也会将地址信息注册到服务注册表,这样网关通过查询服务注册表就可以将请求路由到目标前端服务,这样整个微服务体系的服务自注册自发现和软路由就通过服务注册表和网关串联起来了。如果以面向对象设计模式的视角来看,网关类似Proxy代理或者Façade门面模式,而服务注册表和服务自注册自发现类似IoC依赖注入模式,微服务可以理解为基于网关代理和注册表IoC构建的分布式系统。

     

    三:服务容错

    当企业微服务化以后,服务之间会有错综复杂的依赖关系,例如,一个前端请求一般会依赖于多个后端服务,技术上称为1 -> N扇出(见下图)。在实际生产环境中,服务往往不是百分百可靠,服务可能会出错或者产生延迟,如果一个应用不能对其依赖的故障进行容错和隔离,那么该应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,可能在数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应(Cascading Failure,见图二),严重时可致整个网站瘫痪。

     

     

     

    经过多年的探索和实践,业界在分布式服务容错一块探索出了一套有效的容错模式和最佳实践,主要包括:

    1.电路熔断器模式(Circuit Breaker Patten), 该模式的原理类似于家里的电路熔断器,如果家里的电路发生短路,熔断器能够主动熔断电路,以避免灾难性损失。在分布式系统中应用电路熔断器模式后,当目标服务慢或者大量超时,调用方能够主动熔断,以防止服务被进一步拖垮;如果情况又好转了,电路又能自动恢复,这就是所谓的弹性容错,系统有自恢复能力。下图是一个典型的具备弹性恢复能力的电路保护器状态图,正常状态下,电路处于关闭状态(Closed),如果调用持续出错或者超时,电路被打开进入熔断状态(Open),后续一段时间内的所有调用都会被拒绝(Fail Fast),一段时间以后,保护器会尝试进入半熔断状态(Half-Open),允许少量请求进来尝试,如果调用仍然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态。

     

    2.舱壁隔离模式(Bulkhead Isolation Pattern),顾名思义,该模式像舱壁一样对资源或失败单元进行隔离,如果一个船舱破了进水,只损失一个船舱,其它船舱可以不受影响 。线程隔离(Thread Isolation)就是舱壁隔离模式的一个例子,假定一个应用程序A调用了Svc1/Svc2/Svc3三个服务,且部署A的容器一共有120个工作线程,采用线程隔离机制,可以给对Svc1/Svc2/Svc3的调用各分配40个线程,当Svc2慢了,给Svc2分配的40个线程因慢而阻塞并最终耗尽,线程隔离可以保证给Svc1/Svc3分配的80个线程可以不受影响,如果没有这种隔离机制,当Svc2慢的时候,120个工作线程会很快全部被对Svc2的调用吃光,整个应用程序会全部慢下来。

    3.限流(Rate Limiting/Load Shedder),服务总有容量限制,没有限流机制的服务很容易在突发流量(秒杀,双十一)时被冲垮。限流通常指对服务限定并发访问量,比如单位时间只允许100个并发调用,对超过这个限制的请求要拒绝并回退。

    4.回退(fallback),在熔断或者限流发生的时候,应用程序的后续处理逻辑是什么?回退是系统的弹性恢复能力,常见的处理策略有,直接抛出异常,也称快速失败(Fail Fast),也可以返回空值或缺省值,还可以返回备份数据,如果主服务熔断了,可以从备份服务获取数据。

    Netflix将上述容错模式和最佳实践集成到一个称为Hystrix的开源组件中,凡是需要容错的依赖点(服务,缓存,数据库访问等),开发人员只需要将调用封装在Hystrix Command里头,则相关调用就自动置于Hystrix的弹性容错保护之下。Hystrix组件已经在Netflix经过多年运维验证,是Netflix微服务平台稳定性和弹性的基石,正逐渐被社区接受为标准容错组件

    四:Netflix的微服务框架

    Netflix是一家成功实践微服务架构的互联网公司,几年前,Netflix就把它的几乎整个微服务框架栈开源贡献给了社区,这些框架和组件包括:

    1.Eureka: 服务注册发现框架

    2.Zuul: 服务网关

    3.Karyon: 服务端框架

    4.Ribbon: 客户端框架

    5.Hystrix: 服务容错组件

    6.Archaius: 服务配置组件

    7.Servo: Metrics组件

    8.Blitz4j: 日志组件

    Netflix的开源框架组件已经在Netflix的大规模分布式微服务环境中经过多年的生产实战验证,正逐步被社区接受为构造微服务框架的标准组件。Pivotal去年推出的Spring Cloud开源产品,主要是基于对Netflix开源组件的进一步封装,方便Spring开发人员构建微服务基础框架。对于一些打算构建微服务框架体系的公司来说,充分利用或参考借鉴Netflix的开源微服务组件(或Spring Cloud),在此基础上进行必要的企业定制,无疑是通向微服务架构的捷径。


    今天小程序更新题库为:

    1.什么是自旋锁

    2.说一说Synchronized

    3.什么是偏向锁?

    4.什么是轻量级锁?

    5.lock和synchronize对比

    更多文章请关注公众号:每天学Java。想获得更多最新面试提醒请进入小程序:每天学Java

     公众号二维码:                                                                                          小程序二维码:

                           

     


     

     


     


     


     


     

     

     

    展开全文
  • 微服务技术架构的体系分享.ppt
  • 微服务技术架构体系的深度治理.docx
  • 基于Spring Cloud和Netflix的微服务技术架构基于Spring Cloud和Netflix打造Agenda谈谈微服务微服务技术选型过程微服务架构设计的一些思考点融数微服务架构的核心概念和实现融数DevOps平台对微服务的支撑技术团队的...
  • 微服务技术架构体系分享PPT课件参考.pptx
  • 基于Spring Cloud和Netflix的微服务技术架构.pdf
  • 微服务技术架构体系 上两章主要关注的是微服务的组织架构和业务划分架构,这次来关注下微服务的技术架构体系。 对一些大的成型的互联网公司来说,内部都有一套成型的微服务架构体系,下给出一个比较成型互联网公司...

    微服务技术架构体系

    上两章主要关注的是微服务的组织架构和业务划分架构,这次来关注下微服务的技术架构体系。

    对一些大的成型的互联网公司来说,内部都有一套成型的微服务架构体系,下图给出一个比较成型互联网公司的一个技术架构体系的图,这个是相对比较完善。杨波老师在《微服务》中给出的技术架构图也基本跟我之前公司的技术架构有很大的相似可以说趋同

    简单的来看一下每一个层的作用和层与层之间的关系

    接入层

    接入层负责把外部的流量接入到内部平台系统中来,涉及到更多是基础设施,由运维团队进行负责。

    基础设施层

    基础设施层主要是由运维团队来进行维护,设计由计算,也计算资源的分配,网络,存储,监控,安全等等

    微服务层(网关,业务,支持,平台),这四个层涉及到微服务

    网关层

    流量接进来之后,会先经过一个网关层,网关在微服务起到举足轻重的作用,主要起到反向路由,限流熔断,安全,鉴权等等的跨横切面的功能,这个层在微服务中起到核心的层次。

    业务服务层

    整个业务服务按照逻辑划分为两次,分别是聚合层和基础服务层,聚合层对基础层进行聚合和裁剪,对外部提供业务能力。当然这个视每个公司不同情况而定,此层再划分两层是属于逻辑划分。

    支撑服务层

    微服务并不是单单把业务服务启动起来就完毕,微服务在治理的过程中还需要更多的支持,所以由了支撑服务层。支持服务包含了注册发现,集中配置,容错限流,日志聚合,监控告警,后台服务,后台服务涉及到例如MQ,Job,数据访问,这些都是后台服务的内容。

    平台服务层

    在微服务逐步完善的过程中,各个团队的都引入一个新的平台服务,例如由容器,镜像的管理,容器的服务编排等等,很多公司先后的引入容器化和容器编排来解决运维管理和发布微服务的难题,docker + keburnetes,确实是被微服务越来越接受。另外,通过CICD支撑起来的devops也是构建在平台服务层的这个能力。由于这个平台服务层的逐步完善也在慢慢解放运维人员一开始对微服务各种治理的不适。

    整个六层体系可以认为在一定阶段公司发展的模版,大致的话可以映射到这6个层次

    博客地址:「微服务系列 05」微服务技术架构体系

    转载于:https://juejin.im/post/5cde85c46fb9a07ebd48a465

    展开全文
  • 每个公司都有自己的微服务架构体系,虽然在细节上有很多不同,但是整体的思路是类似的,下展示了一个比较成熟的微服务架构体系。 这个体系按照请求接入,由外到内的顺序,将整体架构分为接入层、网关层、业务...
  • 亿级请求微服务技术架构业务简介微服务实施的前置条件在众多微服务框架中如何选型服务拆分理论和原则及方法架构"三板斧"如何切入到微服务框架中代码结构如何做到提高研发效率微服务后服务的测试方法服务上线流程以及...
  • 技术架构体系分享 微服务 微服务云化概览 1 微服务云化解决方案 2 应用案例 3 目 录 CONTENTS 第一部分 微服务云化概览 PART 01 01 什么是微服务云化技术架构体系 02 当前软件开发行业面临的挑战 01 03 微服务云化...
  • 国内外微服务技术架构演进背景

    千次阅读 2020-11-17 22:19:39
    文章目录(1)国内BAT互联网大厂的微服务架构演进路线(2)海外硅谷互联网大厂的微服务架构演进路线(3)目前国内公司的主流微服务技术栈介绍 (1)国内BAT互联网大厂的微服务架构演进路线 几乎所有技术组件都是自研...
  • 微服务基础架构图

    2018-02-23 16:29:19
    微服务架构总体技术体系,包括接入层、网关层、业务服务层等

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,514
精华内容 49,005
关键字:

微服务技术架构图