微服务之Sping Cloud
版本说明
Finchley SR2
价值简要
微服务之间是松耦合,跨不同业务部门,提供非常充分的灵活性,加快项目开发完成效率,方便组件化独立可扩展性及复用.
微服务应用结构表现
组件简要
1. Eureka(注册中心)
提供服务注册与发现,服务端依赖spring-cloud-starter-netflix-eureka-server,然后用@EnableEurekaServer来标注该应用程序的配置类,在yml 文件中配置服务注册地址,配置相关的参数,客户端依赖 spring-cloud-starter-netflix-eureka-client,然后用
@EnableEurekaClient来标注该应用程序的配置类,通过注册中心,服务之间关系对等,通过部署多台实现高可用,注册中心的元数据基于内存,不提供服务调用,只是同步服务之间实例数据,Eureka Client通过向Eureka Serve发送心跳(默认每30秒)来续约服务的,如果客户端持续不能续约,那么它将在大约90秒内从服务器注册表中删除。 注册信息和续订被复制到集群中的Eureka Serve所有节点, 以此来确保当前服务还“活着”,可以被调用,另外推荐关闭自我保护属性,强制无效的服务从注册中剔除,保证服务之间调用的实例一定程度上是实时的有效的.
2. Feign(声明式Rest客户端)
提供基于REST访问调用,使用方式是通过接口定义服务内容,然后通过服务实例名称进行访问如:
@FeignClient(name="app-user",fallback=UserControllerFeignClientFailCallBack.class )
内部默认集成了负载均衡,算法默认轮询,可通过配置修改算法,但有个缺点就是访问的服务实例名称无法动态配置,在某些应用场景下显得不灵活,如果有根据数据库配置的实例名称来动态调用服务的需求可推荐使用RestTemplate+LoadBalancerClient ; 当然Feign的优点也很名称,简洁,高效.
3. Ribbon(客户端负载均衡器)
提供客户端负载均衡组件,是对系统的高可用,网络压力的缓解和处理能力扩容的重要组件之一,区别于nginx ,ribbon 通常微服务之间访问负载,nginx通常在应用接入层负载或反向代理;Ribbon 使用也很简单,使用 @LoadBalancerClient 声明即可, 在yml 文件里面可以配置 负载算法,重试规则,响应时间权重等默认是轮询方式,还有其它的负载算法:如
1. 随机
2. 最小并发请求
3. 过滤一直访问失败的并过滤掉高并发的
4. 根据响应时间分配权重,根据权重来请求
server, 权重越小,被请求的可能越低
4. Hystrix(熔断器)
提供熔断机制,解决的问题主要避免服务出现雪崩效应,使用方式引入依赖
spring-cloud-starter-netflix-hystrix , 在启动程序上声明@EnableCircuitBreaker, 然后在需要熔断的方法上声明@HystrixCommand(fallbackMethod ="createFailCallBack" ),注意feign默认是已经集成了Hysrix; 熔断的触发条件服务端超时,服务端线程池满等 , 很重要的一点是设置熔断的超时时间一定要根据实际业务设置合理的时间阀值,另外在实践的过程中发现熔断和异常的优先级问题,如果代码中发生异常catch的返回值优先级低于HytrixCommand中的返回值优先级,这个在开发中需要格外注意,否则给用户或接口返回会出现差异.
代码实例
推荐使用开发工具
IDEA 打开,源码包名称:xxxx-yyyyy-platform,详细可参考实践编写源代码.
代码结构截图:
1. -abc 微服务应用
2. -def 微服务应用
3. -config 微服务服务端配置
4. -discover eureka 服务端
5. -hystrix hystrix 熔断监控服务端
6.-zipkin 链路跟踪
扫码或长按关注查看更多文章
微服务之Sping Cloud的更多相关文章
- 微服务与Spring Cloud概述
微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...
- [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST, ...
- 2.微服务开发框架——Spring Cloud
微服务开发框架—Spring Cloud 2.1. Spring Cloud简介及其特点 简介: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见 ...
- 消息驱动微服务:Spring Cloud Stream
最近在学习Spring Cloud的知识,现将消息驱动微服务:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]
- 什么是微服务架构 Spring Cloud?
1 为什么微服务架构需要Spring Cloud 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB) ...
- 微服务与Spring Cloud资料
Microservices Using Spring Boot and Spring Cloud 微服务注册中心 Eureka 架构深入解读 50+ 顶级开源 Kubernetes 工具列表 Apol ...
- 微服务之Spring cloud
微服务 Spring cloud Spring Cloud provides tools for developers to quickly build some of the common patt ...
- Docker、kubernetes、微服务、SpringBoot/Cloud...好乱!到底要不要学?
Docker.微服务日益火热的今天,相信标题上这些名词大家都不陌生.但也相信有很多同学并不够清楚他们的概念,不理解它们的关系,也可能有这样的疑惑:不知道跟我有没有关系?要不要学习?怎么去学习?学哪些东 ...
- 第十章 消息驱动的微服务: Spring Cloud Stream
Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架. 它可以基于Spring Boot 来创建独立的. 可用于生产的 Spring 应用程序. 它通过使用 Sprin ...
随机推荐
- java中传值方式的个人理解
前言 这几天在整理java基础知识方面的内容,对于值传递还不是特别理解,于是查阅了一些资料和网上相关博客,自己进行了归纳总结,最后将其整理成了一篇博客. 值传递 值传递是指在调用函数时将实际参数复制一 ...
- js中var的有或无--重复声明和以后的声明
js中var的有或无--重复声明和以后的声明 使用var语句多次声明一个变量不仅是合法的,而且也不会造成任何错误. 如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色. 如果重复 ...
- InnoDB中锁的模式,锁的查看,算法
InnoDB中锁的模式 Ⅰ.总览 S行级共享锁lock in share mode X行级排它锁增删改 IS意向共享锁 IX意向排他锁 AI自增锁 Ⅱ.锁之间的兼容性 兼 X IX S IS X ...
- 【PAT】B1071 小赌怡情(15 分)
水题一道,直接贴代码 #include<cstdio> #include<string.h> int main(){ //玩家的筹码数.以及 int T,K;scanf(&qu ...
- nginx ssl 自签证书实验
两台服务器 11.11.11.3 (生成证书然后到CA服务上注册) 11.11.11.4 (nginx服务.CA证书签发) 1.建立CA服务器(11.3) .在CA上生成私钥文件 在/e ...
- January 09th, 2018 Week 02nd Tuesday
Use the smile to change the world. Don't let the world change your smile. 用你的笑容去改变这个世界,别让这个世界改变了你的笑容 ...
- while else 结构体(自测)
while else : while循环被break打断,则不执行与while并列的else程序. count = 0 while count <= 5: count = count + 1 i ...
- Flex布局新写法兼容写法详解
很久之前用过flex,但是没有考虑过兼容性问题,为了兼容ios一定要加上-webkit前缀: ul{ display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ ...
- Docker部署HDFS
docker部署hadoop只是实验目的,每个服务都是通过手动部署,比如namenode, datanode, journalnode等.如果为了灵活的管理集群,而不使用官方封装好的自动化部署脚本,本 ...
- github(1)安装及使用图文详解
教程https://blog.csdn.net/qq_32166627/article/details/54427622 下载地址:https://desktop.github.com/