博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java B2B2C Springcloud电子商务平台源码-Ribbon 基本使用
阅读量:6948 次
发布时间:2019-06-27

本文共 4908 字,大约阅读时间需要 16 分钟。

具体内容

现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册的目的是希望所有的服务都统一归属到 Eureka 之中进 行处理,但是现在的问题,所有的微服务汇集到了 Eureka 之中,而客户端的调用也应该通过 Eureka 完成。而这种调用就可以利用 Ribbon 技术来实现。需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六

Ribbon 是一个服务调用的组件,并且是一个客户端实现负载均衡处理的组件。服务器端实现负载均衡可以使用 Nginx、 HAProxy、LVS 等。

Ribbon 基本使用

1、 【microcloud-consumer-80】修改 pom.xml 配置文件,追加 Ribbon 相关依赖支持包:

org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-ribbon
复制代码

2、 【microcloud-consumer-80】修改 RestConfig 配置类,在获取 RestTemplate 对象的时候加入 Ribbon 的配置注解@LoadBalanced。

package cn.study.microcloud.config;import java.nio.charset.Charset;import java.util.Base64;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpHeaders;import org.springframework.web.client.RestTemplate;@Configurationpublic class RestConfig {    @Bean    public HttpHeaders getHeaders() { // 要进行一个Http头信息配置        HttpHeaders headers = new HttpHeaders(); // 定义一个HTTP的头信息        String auth = "studyjava:hello"; // 认证的原始信息        byte[] encodedAuth = Base64.getEncoder()                .encode(auth.getBytes(Charset.forName("US-ASCII"))); // 进行一个加密的处理        // 在进行授权的头信息内容配置的时候加密的信息一定要与“Basic”之间有一个空格        String authHeader = "Basic " + new String(encodedAuth);        headers.set("Authorization", authHeader);        return headers;    }    @Bean    @LoadBalanced    public RestTemplate getRestTemplate() {        return new RestTemplate();    }}复制代码

3、 【microcloud-consumer-80】修改 aplication.yml 配置文件,追加 Eureka 的服务注册地址配置。

server:  port: 80eureka:   client:     register-with-eureka: false #客户端不注册到eureka,只是进行服务的调用    service-url:       defaultZone: http://edmin:studyjava@eureka-7001.com:7001/eureka,http://edmin:studyjava@eureka-7002.com:7002/eureka,http://edmin:studyjava@eureka-7003.com:7003/eureka复制代码

4、 【microcloud-consumer-80】修改项目的启动类,追加 Eureka 客户端的配置注解:

package cn.study.microcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class Consumer_80_StartSpringCloudApplication {    public static void main(String[] args) {        SpringApplication.run(Consumer_80_StartSpringCloudApplication.class,                args);    }}复制代码

5、 【microcloud-consumer-80】修改控制器调用类;

现在在 eureka 之中注册的所有服务的名称都是大写字母:MICROCLOUD-PROVIDER-DEPT;

package cn.study.microcloud.controller;import java.util.List;import javax.annotation.Resource;import org.springframework.cloud.netflix.ribbon.RibbonClient;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpMethod;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import cn.study.vo.Dept;@RestControllerpublic class ConsumerDeptController {    public static final String DEPT_GET_URL = "http://MICROCLOUD-PROVIDER-DEPT/dept/get/";    public static final String DEPT_LIST_URL = "http://MICROCLOUD-PROVIDER-DEPT/dept/list/";    public static final String DEPT_ADD_URL = "http://MICROCLOUD-PROVIDER-DEPT/dept/add?dname=";    @Resource    private RestTemplate restTemplate;    @Resource    private HttpHeaders headers;    @RequestMapping(value = "/consumer/dept/get")    public Object getDept(long id) {        Dept dept = this.restTemplate                .exchange(DEPT_GET_URL + id, HttpMethod.GET,                        new HttpEntity(this.headers), Dept.class)                .getBody();        return dept;    }    @SuppressWarnings("unchecked")    @RequestMapping(value = "/consumer/dept/list")    public Object listDept() {        List
allDepts = this.restTemplate .exchange(DEPT_LIST_URL, HttpMethod.GET, new HttpEntity
(this.headers), List.class) .getBody(); return allDepts; } @RequestMapping(value = "/consumer/dept/add") public Object addDept(Dept dept) throws Exception { Boolean flag = this.restTemplate.exchange(DEPT_ADD_URL, HttpMethod.POST, new HttpEntity(dept, this.headers), Boolean.class) .getBody(); return flag; }}复制代码

访问地址: Ribbon 与 Eureka 整合之后用户不再去关注具体的 Rest 服务的地 址与端口号了,所有的信息获取都通过 Eureka 完成。

转载于:https://juejin.im/post/5c661a3b518825629d07548d

你可能感兴趣的文章
Win7板凳哥升职记24 Win7技巧速成专区
查看>>
ubuntu 14.04 使用zram
查看>>
遭遇不能拖拽,居然被这样解决了
查看>>
MySQL Slave_IO_Running:NO解决办法
查看>>
邮件服务器案例:农行携手u-mail邮箱系统
查看>>
订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量)
查看>>
行为型模式之六:责任链模式
查看>>
C#执行DOS命令(CMD命令)
查看>>
RB,CCR设备开启FastTrack
查看>>
区域性名称和标识
查看>>
Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)
查看>>
java.sql.SQLException: Before start of result set
查看>>
word2007去掉文字当中的白色背景
查看>>
暑假转瞬即逝
查看>>
vi 图片上传封装函数
查看>>
php 文件上传实例代码
查看>>
我的友情链接
查看>>
www.mscode.cc:autohal.exe 应用程序错误
查看>>
出现 SSD 故障时 VSAN 群集会发生什么?
查看>>
容易马虎的地方!!!!
查看>>