版本说明

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的更多相关文章

  1. 微服务与Spring Cloud概述

    微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...

  2. [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务

    微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST,  ...

  3. 2.微服务开发框架——Spring Cloud

                     微服务开发框架—Spring Cloud 2.1. Spring Cloud简介及其特点 简介: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见 ...

  4. 消息驱动微服务:Spring Cloud Stream

    最近在学习Spring Cloud的知识,现将消息驱动微服务:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]

  5. 什么是微服务架构 Spring Cloud?

    1 为什么微服务架构需要Spring Cloud 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB) ...

  6. 微服务与Spring Cloud资料

    Microservices Using Spring Boot and Spring Cloud 微服务注册中心 Eureka 架构深入解读 50+ 顶级开源 Kubernetes 工具列表 Apol ...

  7. 微服务之Spring cloud

    微服务 Spring cloud Spring Cloud provides tools for developers to quickly build some of the common patt ...

  8. Docker、kubernetes、微服务、SpringBoot/Cloud...好乱!到底要不要学?

    Docker.微服务日益火热的今天,相信标题上这些名词大家都不陌生.但也相信有很多同学并不够清楚他们的概念,不理解它们的关系,也可能有这样的疑惑:不知道跟我有没有关系?要不要学习?怎么去学习?学哪些东 ...

  9. 第十章 消息驱动的微服务: Spring Cloud Stream

    Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架. 它可以基于Spring Boot 来创建独立的. 可用于生产的 Spring 应用程序. 它通过使用 Sprin ...

随机推荐

  1. maven——依赖管理

    管理包依赖是 Maven 核心功能之一,下面通过如何引入 jar 包:如何解析 jar 包依赖:包冲突是如何产生:如何解决包冲突:依赖管理解决什么问题:什么是依赖范围:使用包依赖的最佳实践等 6 个问 ...

  2. 安装SQL 2005 出现警告 ,32位ASP.NET已经注册,需要注册64位

    将64位.net注册到iis上 cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 ...

  3. 使用iTextSharp导出PDF

    /// <summary> /// 导出至PDF /// </summary> /// <param name="dt">数据源</par ...

  4. Centos7.5.1804永久生效修改主机名

    原来主机名 [root@node1 ~]# 查看Centos的版本: [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Cor ...

  5. [MapReduce_add_1] Windows 下开发 MapReduce 程序部署到集群

    0. 说明  Windows 下开发 MapReduce 程序部署到集群 1. 前提 在本地开发的时候保证 resource 中包含以下配置文件,从集群的配置文件中拷贝 在 resource 中新建  ...

  6. Head First Android --- Intent

    How to create the intentYou create an intent that specifies an action using the following syntax:whe ...

  7. 关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

    这两天在搞elk的时候,filebeat中指定输出日志至Broker(此处Broker采用redis作为缓存),但是redis中却没有内容,所以就开始排查来 filebeat采用RPM安装的方式来的. ...

  8. Mysql中use一个表出现警告:Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

    今天使用mysql登录数据库,use一个表的时候出现警告信息,详细如下: 后来上网查了一下,出现问题的原因是: 进入mysql时,没有使用  -A  参数 平时我们习惯使用:mysql -hhostn ...

  9. Java设计模式之三 ----- 建造者模式和原型模式

    前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式.工厂方法和抽象工厂模式.本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式. 建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用 ...

  10. 【BZOJ3529】数表

    数表 Description 有一张 n*m 的数表,其第i行第j列(1<=i<=n,1<=j<=m)的数值为能同时整除 i和j的所有自然数之和.给定a,计算数表中不大于a的数 ...