• springCloud


    SpringCloud的五大组件:

    服务发现——Netflix Eureka

    客服端负载均衡——Netflix Ribbon

    断路器——Netflix Hystrix

    服务网关——Netflix Zuul

    分布式配置——Spring Cloud Config

    服务发现Eureka:

    Ribbon

    作用:Ribbon,主要提供客户侧的软件负载均衡算法。

    简介:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。

    注意看上图,关键点就是将外界的rest调用,根据负载均衡策略转换为微服务调用。Ribbon有比较多的负载均衡策略,以后专门讲解。

    1) SpringBootSpringCloud什么关系?

    1. SpringBootSpringCloud都是Spring出品,完全兼容Spring框架
    2. SpringBoot构建项目的工具
    3. SpringCloud微服务框架,集成业界最优秀各方面的解决产品

    Hystrix

    作用:断路器,保护系统,控制故障范围。

    简介:为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

    Zuul

    作用:api网关,路由,负载均衡等多种作用

    简介:类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。

    在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。

    Config

    作用:配置管理

    简介:SpringCloud Config提供服务器端和客户端。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。

    这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。

    CAP定理

    小结:

    1) SpringCloud微服务,它内涵非常丰富,每个产品都做到极致

    2) Eureka注册中心,Ribbon前端负载均衡,Feign声明式WS支持,REST

    3) 分布式系统基础设计定理:CAPC代表一致性,A代表可用性,P分区容错性

    4) ZooKeepre侧重强一致性,CPEureka侧重于可用性,AP设计。对应注册中心,这样的业务,注册的信息会频繁发生变化,注册中心实现Eureka更加强大。

    5) Eureka,启动Eureka注解,服务OK。很简单控制台。高效。功能单一。

    6) Ribbon负载均衡,@LoadBanlance。支持默认:轮询,权重,随机

    7) Feign体现接口,好处,自己写的,对业务非常清晰,调用非常方便,学习成本非常低。

     

     

    1) Eureka注册中心(心跳机制,树结构,简单),类似ZooKeeper(心跳机制,简单树结构,数据字典)。动态!

     

    EurekaZooKeeper有什么不同?

     

    分布式系统设计定理:CAP

     

    1. Eureka设计侧重AP,可用性,结构:peer to peer,每个点互为主从,如果有一个节点数据发生变化,其他节点会自动同步数据。本地缓存,尽量尝试。
    2. ZooKeeper设计侧重CP,一致性。结构:主从leader/follwer,如果主节点宕机,集群无法使用,它内部触发选举动作。可以使用,不保证正确性。本地缓存,但是不推荐。
    3. 注册中心业务,EurekaZK更加合适,信息不常发生变化,一致性基本就得的保证。

     

    1) SpringCloud重点技术,Hystrix断路器,Zuul API gateway网关,异构开发语言支持Sidecar+NodeJS

    2) Hystrix断路器(熔断器)大型程序,微服务程序,除了微服务代码自身可靠性,微服务部署分布式环境中,互相访问机器对机器。可能机器故障(永久)、网络涌动(暂时)。

    3) 断路器原理,传统try/catch,业务其实已经开始处理,在业务其中某一个步骤出现异常,程序就跳转catch,处理善后。关键是业务已经处理,时间慢。还有微服务已经宕机,等待超时,但超时时间,不能设置非常短?业务一般需要“很久”才能完成,如果这个超时时间太短,业务还未完成,业务无法正常调用。设置超时时间通常是要超过业务平均时间+冗余时间。一般翻一倍速度。1分钟、5分钟、20分钟、1个小时、2个小时(支付宝)、24小时(购买商品京东,晚上12点之前确认支付)。断路器机制,a.当微服务正常访问时,断路器处于关闭状态,就根本不做调用。B.当微服务访问失败,失败多次,超过阀值,人为设置,当失败次数超过阀值,说明此微服务已经暂时无法联通。断路器状态打开状态。C.又有人调用这个微服务,先尝试一下是否联通,不是靠访问失败来判断,来通过心跳机制尝试。Eureka列表中不存在链接,立即失效。继续处于“打开”状态,打开时业务就会回调fallback指定方法。方法内:返回一个预设值;返回通用结构,jsonstatus+msg+dataSysResult结构。D.如果服务一旦正常,它会从“半开”状态切换“关闭”状态,此时后面所有访问这个微服务链接就都被正常访问,不再做判断。

    4) Zuul api网关,以后所有用户请求必须从此网关进入去访问我们的业务。合法身份验证(shiro)、转发(nginx)内置了很多filter过滤器,形成filter过滤器链。反向代理,屏蔽后端服务器真实地址。对外暴露,开放80端口。数据库不允许外部直接登录,VPN(账号)

    5) Zuul一个配置文件application.yml配置zuul映射,映射到内网中的某个微服务的链接去。user/**=provider-user。以后如果通过zuul来访问,访问路径就多加一层。通过这一层,分类来标识不同的微服务。如果要加权限校验,就可以按分类目录来设置权限。+注解

    6) Sidecar支持异构系统的统一接入入口。Nodejs URL http://localhost:8060/index,能增加一些功能,异构Zuul接入,它系统对外暴露,8060 nodejs不对外暴露。这时就需要一个跳板,就是zuulsidecar的作用就突显。

    1) 配置中心,

    1. 例如:数据库的配置jdbc.properties,如果数据库密码发生变化。DBA做的安全,方式定期修改数据库密码。传统只能停机,重启服务。如果配置发生变化,配置中心可以动态更新值。
    2. 每个系统都有一个jdbc.properties,针对微服务,成百上千,上万。构建分布式配置中心,从各个微服务中提取出来,放到一个单独机器上,自身也是一个微服务,其他需要相关配置的就来这个机器上访问。(类似SSO解决方案)
    3. 支持多个版本。Price100v1.0),110v1.1)。举例:税率,一年换一次税率。2019.1.1切换新的税率。出差报销,2018.12.30提交,应该按旧的税率来核实,领导审批,1号审批,财务计算,软件,重新更新税率。

    在数据库字段就一个版本号,v1.0,业务来指定税率。默认税率,可以修改。

    自动升级新税率。手动!

    2) 配置中心数据,a.保存数据(db+redis(单独实例,永久不失效,修改set)git),b.不会频繁发生变化,很少变化,但是肯定变化,数据可以修改(db+redisgit)

    2) Ribbon负载均衡,Nginx比较?

     

    Nginx基于c语言,TCP/IP 7层,5w/s基于4层、7层交换。F5硬件负载均衡器50w/sZuul2.0 200w/s集群。Lua语言,Shell脚本语言,Linux

     

    Ribbon SpringCloud中的一环,本地缓存Eureka服务列表,服务直接选择一个最佳路径就转向。

     

    3) Feign支持REST封装

     

    a.  api RestTemplate对象;HttpClient调用+json。简单,能调整权重吗?能停止服务?能加强服务?

     

    b.  增加一个接口(业务);dubbo调用。能增强应用程序,而且开发者无需写代码。

     

    springboot关注微观,cloud关注宏观

     

  • 相关阅读:
    第二章 成员、变量和常量
    Roman To Integer
    Integer To Roman
    Container With Most Water
    搜狗2015前端工程师笔试题
    从网易与淘宝的font-size思考前端设计稿与工作流
    移动端web app自适应布局探索与总结
    CSS 常用代码
    利用 HTML 和 CSS 实现常见的布局
    CSS 尺寸单位
  • 原文地址:https://www.cnblogs.com/zj-xu/p/11326797.html
Copyright © 2020-2023  润新知