版本说明

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. python第八十八天----dom js

    DOM操作 1. 找到标签直接查找 document.getElementById 根据ID获取一个标签 document.getElementsByName 根据name属性获取标签集合 docum ...

  2. sql语句进阶教程

    转载自:http://blog.csdn.net/u011001084/article/details/51318434 最近从图书馆借了本介绍SQL的书,打算复习一下基本语法,记录一下笔记,整理一下 ...

  3. java调用python的惨痛史(无法获取环境变量)

    环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle        事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用pyt ...

  4. 面向对象的封装与隐藏 this

    当我们创建一个对象的时候,我们可以通过‘对象.属性’的方式,对对象的属性进行赋值. 这里赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件. 但是实际问题中我们需要给这个属性 ...

  5. [cb]ScriptableWizard 创建向导

    需求 方便策划一步一步的创建Actor 思路分析 Unity的Editor中提供创建向导的功能,ScriptableWizard 代码实现 创建一个WizardCreateActor继承自Script ...

  6. [MapReduce_add_3] MapReduce 通过分区解决数据倾斜

    0. 说明 数据倾斜及解决方法的介绍与代码实现 1. 介绍 [1.1 数据倾斜的含义] 大量数据发送到同一个节点进行处理,造成此节点繁忙甚至瘫痪,而其他节点资源空闲 [1.2 解决数据倾斜的方式] 重 ...

  7. Mac快速上手指南

    上周刚入手了2017版MacBookPro,预装macOS High Sierra.第一次接触Mac系统,经过一周的使用,简单总结下与Windows相比最常用的功能,快速上手. 1.Mac键盘实现Ho ...

  8. GUI概述与Frame演示

    java 图形化界面的对象存在这两个包中: java.awt :Abstract WindowsToolkit(抽象窗口工具包)需要调用本地系统方法实现功能,属重量级控件 javax.swing:在a ...

  9. python第四十五课——继承性之多继承

    测试模块 演示多继承的结构和使用: 子类:Child 直接父类(多个):Father.Mother 注意: 由于有多个直接父类,多个父类都要自己给其属性赋值, 避免混淆,我们使用类名.__init__ ...

  10. [笔记]后缀数组SA

    参考资料这次是真抄的: 1.后缀数组详解 2.后缀数组-学习笔记 3.后缀数组--处理字符串的有力工具 定义 \(SA\)排名为\(i\)的后缀的位置 \(rk\)位置为\(i\)的后缀的排名 \(t ...