/springcloudsamples-ggj

中文本地化,加一些注释啥的,对架包进行一些升级~https://github.com/Oreste-Luci/netflix-oss-example

Primary LanguageJavaApache License 2.0Apache-2.0

#Springcloudsamples-ggj 本项目是对 https://github.com/Oreste-Luci/netflix-oss-example 项目的中文本地化,加了一些自己的理解,springcloud是个大杂烩,里面有很多东西, 从springcloud官方文档就可以看出来个大概.

Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。使用 Spring Cloud 开发者可以快速实现上述这些模式。

###spring-cloud版本记录

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version></version>
</parent>
  • Brixton.SR4 2016-08-18 commit
  • Brixton.RELEASE 2016-01-21

##本项目模块 base config-server eureka-server eureka-client-a eureka-client-b eureka-clinet-c turbine spring-cloud-dashboard zuul

##模块介绍

  • base 主要就是封装一些通用的POJO

  • config-server 文档 分布式配置管理。

  • eureka-server 文档 eureka服务端

  • eureka-client 文档 eureka客户端A、B、C. C可以调用B和A,B可以调用A。类似于微服务直接的调用

  • turbine 文档 收集微服务运行时候的信息,然后丢到kafka 或者rabbitmq

  • spring-cloud-dashboard spring-cloud面板,显示所有注册信息

  • zuul 文档 路由。

##运行环境

  • jdk8
  • 自己搭建kafka 或者rabbitmq 环境,
 如果使用或者kafka,请使用以下配置项,同时修改架包引用
  stream:
       kafka:
         binder:
           brokers: 123.56.118.135
           zkNodes: 123.56.118.135

 如果使用或者rabbitmq,请使用以下配置项,同时修改架包引用
 rabbitmq:
     host: localhost
     port: 5672

整体流程

首先启动config-server ,然后再启动 eureka-server集群,修改端口8761、8762 启动两次,
接着启动 eureka-client(A、B 、C 各自都启动两次验证集群用),然后就是turbine、 spring-cloud-dashboard、zuul

验证流程

除了eureka-clientA、B 、C配置的是随机端口号,其他几个的端口号都在配置文件里面固定好的
我们可以启动spring-cloud-dashboard 面板进行观看运行情况,http://localhost:8086/

image

测试eureka-clientC 调用 eureka-clientB 或者eureka-clientA的 
我们可以通过spring-cloud-dashboard查看到eureka-clientC 的端口号或者通过idea打印的日志
2016-08-18 14:04:21.275  INFO 2768 --- [main] c.n.e.EurekaDiscoveryClientConfiguration : Updating port to 65026 

image

#####C调用A :

###测试B

###测试A

###测试spring-cloud-config 通用的配置文件放在 git,我们可以修改某个文件内容然后验证下是否刷新了。 spring-cloud-config 支持单个刷新也支持集群刷新。比如配置中心里面eurekaclientA.yml 这个文件里面某个配置项info.configuration值修改了, 如果我们想让项目里面加载这个最新的配置项有如下策略

###测试熔断 微服务之间因为可以相互调用,如果某个微服务挂了,会导致相关联的也都直接挂了,这是熔断和容错就起作用了。 代码里面加了 @HystrixCommand的方法就是容错时候调用的方法。 比如C调用A的时候 A服务是挂了,那么返回的就是容错的数据。

###测试turbine

###测试zuul

  • 上面步骤已有

测试spring-cloud-dashboard