您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
要资料
 
     
   
 订阅
  捐助
Spring Cloud微服务架构简介
 
  12235  次浏览      18
 2019-6-17
 
编辑推荐:
本文来自于51cto,本文介绍了什么是Spring Cloud,Spring Cloud主要的功能及Spring Cloud服务治理。

什么是微服务

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

微服务架构应该具备以下特性:

每个微服务可独立运行在自己的进程里。

一系列独立运行的微服务共同构建起整个系统。

每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理,用户管理等。

微服务之间通过一些轻量的通信机制进行通信,例如通过RESTful API进行调用。

可以使用不同的语言与数据存储技术

全自动部署机制

微服务架构的优点

易于开发和维护

一个微服务只会关注一个特定的业务功能,所以它业务清晰,代码量较少。

单个微服务启动较快

单个微服务代码量较少,所以启动会比较快。

局部修改容易部署

单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。

技术栈不受限

在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。

按需伸缩

可根据需求,实现细粒度的扩展。

微服务架构面临的挑战

运维要求高

更多的服务意味着更多的运维投入。

分布式固有的复杂性

使用微服务架构是分布式系统。对于一个分布式系统,系统容错,网络延迟,分布式事务等都会带来巨大的挑战。

接口调整成本高

微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。

重复劳动

很多服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。

微服务整体架构图

服务注册于发现

各个服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。

服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。

各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件如长时间无法与某为服务实例通信,就会注销该实例。

微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址了。

Fegion实现声明式REST调用

REST(Representational State Transfer ),用中文翻译为"具象状态传输"(也有:"代表性状态传输")。是由 Roy Thomas Fielding博士 在2000年就读加州大学欧文分校期间在学术论文中提出的一个术语。REST 定义了一组体系架构原则,您可以根据这些,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。Feign是一个声明式的WebService客户端。使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在接口上添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和×××。SpringCloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

使用Hystrix实现微服务的容错处理

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而提升系统的可用性和容错性。Hystrix主要通过以下几点实现延迟和容错。

包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用到了设计模式中的“命令模式”。

跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间。

资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等候,从而加速失败判定。

监控:Hystrix可以近乎实时地监控运行指标和配置变化,例如成功,失败,超时以及被拒绝的请求等。

回退机制:当请求失败,超时,被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑可由开发人员自行提供,例如返回一个缺省值。

自我修复:断路器打开一段时间后,会自动进入“半开”状态。

如果没有容错处理,“基础服务故障”导致“级联故障”从而形成右边的雪崩效应

使用Zuul构建微服务网关

Zuul是Netflix开源的微服务网关,它可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能。

身份认证与安全

动态路由

压力测试

负载分配

静态响应处理

多区域弹性

Zuul大部分功能是通过过滤器实现的,如右图所示。

使用Spring CloudConfig统一管理微服务配置

Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存储库可以很好地支持版本管理,Spring默认配置是使用Git存储库。具有如下优点:

集中管理配置:一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此几种管理配置是非常有必要的。

不同环境不同配置:例如,数据源配置在不同的环境(开发,测试,预发布,生产等)中是不同的。

运行期间可动态调整:例如可根据各个微服务的负载情况,动态调整数据源连接池大小或熔断阈值,并且在调整配置是不停止微服务。

配置修改后可自动更新。如配置内容发生变化,微服务能够自动更新配置。

Spring Cloud服务治理

注册中心监控

容错处理监控

微服务健康检查

微服务调用追踪

 

   
12235 次浏览       18
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
 

聚圣源三个字酒业公司起名文明礼仪内容茫然若失的意思孙氏男宝宝起名大全英雄无敌5控制台陈安之讲座乡野欲潮放飞心灵男孩起名大全2018属猴公司起名字查凶一百条裙子在线起名免费取名大全网上起名的准吗2019起名字姓张郑氏取名起名大全女孩名字大全将进酒小说无删减版全文免费阅读石家庄起名公司实体店地址kux寓好名起名网个人pos机 商户起名华易起名网普姓女孩起名大全上牙代表父母下牙代表儿女公共关系论文格式属牛起名的宜用字,忌用字仿宋gb2312字体上海教育频道交错时光的爱恋非主流个性伤感图片虚月道君淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化