# spring-cloud **Repository Path**: ms-zhang/spring-cloud ## Basic Information - **Project Name**: spring-cloud - **Description**: 最简单的spring-cloud 使用 Netflix的部分组件及功能特性如下: Eureka(服务注册与发现框架):一个基于REST风格的服务组件,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移 Ribbon(客户端负载均衡器):提供客户端负载均衡算法,将Netflix的中间层服务连接起来 Feign(声明式HTTP客户端):可以创建声明式、模板化的HTTP客户端,进行微服务调用 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2018-03-21 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-cloud 最简单的spring-cloud 使用 Netflix的部分组件及功能特性如下: Eureka(服务注册与发现框架):一个基于REST风格的服务组件,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移 Ribbon(客户端负载均衡器):提供客户端负载均衡算法,将Netflix的中间层服务连接起来 Feign(声明式HTTP客户端):可以创建声明式、模板化的HTTP客户端,进行微服务调用 ![输入图片说明](https://gitee.com/uploads/images/2018/0322/093703_21734fd4_922434.png "屏幕截图.png") service1和service2 代码是一样的,只有配置文件中 server.port 端口不一样, client-a 是 采用 Ribbon 进行服务调用 。 client-b 是采用 Feign 进行服务调用。 我用的是spring-boot 2.0版本 ,所以pom 文件中需要注意一下。 在 service 中 pom 文件 需要添加如下依赖 org.springframework.cloud spring-cloud-starter-netflix-eureka-server 在client-b 中 pom 文件 需要添加如下依赖 org.springframework.cloud spring-cloud-starter-openfeign 在client-a 中pom 文件 需要添加如下依赖 org.springframework.cloud spring-cloud-starter-netflix-ribbon 项目启动方式,如下图: 必须以spring-boot:run 启动。 ![项目启动说明](https://gitee.com/uploads/images/2018/0322/094614_412b6a43_922434.png "屏幕截图.png") 先启动discovery ,然后在浏览器访问 http://localhost:8081/ 就可以看到服务注册中心了 之后再启动 service 就可以在注册中心看到服务提供者了,并且可以直接在浏览器访问暴露的服务了。 服务消费者有两种 : Feign 和 Ribbon Feign(服务消费者)client-b 特点: 1,在application 中需要添加注释,启动Feign ![输入图片说明](https://gitee.com/uploads/images/2018/0322/095722_464fed49_922434.png "屏幕截图.png") 2,需要添加一个接口 ,接口中的方法必须要和 service 中的一样, ![输入图片说明](https://gitee.com/uploads/images/2018/0322/095925_4b0bcd9f_922434.png "屏幕截图.png") Ribbon (服务消费者) client-a 特点: 1,需要在 application 中添加 RestTemplate ![输入图片说明](https://gitee.com/uploads/images/2018/0322/100204_49898220_922434.png "屏幕截图.png") 2,在调用的时候 需要通过 RestTemplate 来调用。 ![输入图片说明](https://gitee.com/uploads/images/2018/0322/100314_3f0c177a_922434.png "屏幕截图.png")