03_SpringCloud整合Ribbon实现负载均衡

采用随机负载均衡策略,四线服务之间的调用
在这里插入图片描述
2个用户中心,1个内容中心,内容中心调用用户中心服务

package com.itmuch.contentcenter.service.impl;import com.itmuch.contentcenter.dao.content.ShareMapper;
import com.itmuch.contentcenter.domain.entity.content.Share;
import com.itmuch.contentcenter.dto.ShareDTO;
import com.itmuch.contentcenter.dto.UserDTO;
import com.itmuch.contentcenter.service.IShareService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;/*** @author gblfy* @ClassNme ShareServiceImpl* @Description TODO* @Date 2019/7/6 17:58* @version1.0*/
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ShareServiceImpl implements IShareService {private final ShareMapper shareMapper;private final RestTemplate restTemplate;private final DiscoveryClient discoveryClient;@Overridepublic ShareDTO findById(Integer id) {//获取分享详情Share share = this.shareMapper.selectByPrimaryKey(id);//发布人idInteger userId = share.getUserId();//怎么调用用户微服务的/users/{userId}呢?List<ServiceInstance> instances = discoveryClient.getInstances("user-center");List<String> targetURLList = instances.stream()//数据变换.map(instance -> instance.getUri().toString() + "/users/{id}").collect(Collectors.toList());int i = ThreadLocalRandom.current().nextInt(targetURLList.size());log.info("请求的目标地址:{}", targetURLList.get(i));UserDTO userDTO = this.restTemplate.getForObject(targetURLList.get(i), UserDTO.class, userId);//消息的装配ShareDTO shareDTO = new ShareDTO();BeanUtils.copyProperties(share, shareDTO);shareDTO.setWxNickname(userDTO.getWxNickname());return shareDTO;}
}

使用Ribbon实现负载均衡

Ribbon是什么?

引入Ribbon后的架构严谨

整合Ribbon实现负载均衡

添加依赖

此依赖中已包括

  <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

启动类加注解

   @Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}

写配置(无)

Ribbon重构后,负载均衡效果

package com.itmuch.contentcenter.service.impl;import com.itmuch.contentcenter.dao.content.ShareMapper;
import com.itmuch.contentcenter.domain.entity.content.Share;
import com.itmuch.contentcenter.dto.ShareDTO;
import com.itmuch.contentcenter.dto.UserDTO;
import com.itmuch.contentcenter.service.IShareService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;/*** @author gblfy* @ClassNme ShareServiceImpl* @Description TODO* @Date 2019/7/6 17:58* @version1.0*/
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ShareServiceImpl implements IShareService {private final ShareMapper shareMapper;private final RestTemplate restTemplate;@Overridepublic ShareDTO findById(Integer id) {//获取分享详情Share share = this.shareMapper.selectByPrimaryKey(id);//发布人idInteger userId = share.getUserId();//怎么调用用户微服务的/users/{userId}呢?//Ribbo重构后UserDTO userDTO = this.restTemplate.getForObject("http://user-center/users/{userId}", UserDTO.class, userId);//消息的装配ShareDTO shareDTO = new ShareDTO();BeanUtils.copyProperties(share, shareDTO);shareDTO.setWxNickname(userDTO.getWxNickname());return shareDTO;}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++构造函数执行顺序

引言 当创建一个类的对象时调用该类的构造函数&#xff1b;若为继承关系的类&#xff0c;则先执行父类的构造函数&#xff0c;再执行子类的构造函数&#xff1b;若为继承关系的类&#xff0c;该类中含有其它类类型的成员变量&#xff0c;那么其构造函数的调用顺序该如何呢。今…

容器精华问答 | 我们为什么需要容器?

戳蓝字“CSDN云计算”关注我们哦&#xff01;容器技术是这两年热门的话题&#xff0c;因为容器技术给我们带来了很多方便的地方&#xff0c;节约了不少成本&#xff0c;不管是在运维还是开发上。今天&#xff0c;就让我们来看看关于容器更加有深度的问题吧。1Q&#xff1a;什么…

C++11继承构造函数在类中的使用

继承构造函数概念衍生问题使用示例注意扩展使用&#xff08;函数&#xff09;示例代码输出结果注意概念 继承构造函数在C11特性中随之提及&#xff0c;其大概可以理解为&#xff1a; 解决了派生类无法直接使用基类中的构造函数的这一问题。 正常情况下&#xff0c;基类定义了自…

grep从文件末尾开始找_新人自学前端到什么程度才能找工作?

这个问题打我记事起到现在&#xff0c;问过我的人&#xff0c;没有1000也有800了。足以见得这个问题是多么的不得人心。自学前端开发&#xff0c;不管他在网上百度了多少资料&#xff0c;看了多少教程&#xff0c;你总得先做个网页出来。所以&#xff0c;很多人都是从html标签开…

Spring Tool Suite 4安装Lombok

Lombok官网&#xff1a;https://www.projectlombok.org/download 文章目录一、下载jar包二、lombok.jar复制三、运行lombok.jar四、安装lombok4.1 点击确定4.2 找到SpringToolSuite4.exe五、以管理员运行Spring Tool Suite 4六、引入lombok依赖6.1 maven项目6.2 普通web项目七、…

base昆明,腾讯云在合作伙伴的阵营中@了TA

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;在今年的腾讯“三合一”大会上&#xff0c;阿晶得到了这样一则数据&#xff1a;截至目…

IntelliJ IDEA 2019 安装lombok

文章目录一、安装插件二、添加lombok依赖三、重启IntelliJ IDEA四、效果图五、如果不生效一、安装插件 二、添加lombok依赖 <!--Lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version&g…

记录C++类中的一次函数调用

引用 之前遇到一次函数调用结果的问题&#xff0c;今天在这里做一下记录。 一个基类&#xff0c;一个派生类&#xff0c;两个类中都有一个函数名相同&#xff0c;参数相同&#xff0c;参数不同的函数&#xff0c;创建基类指针指向派生类对象&#xff0c;调用相应的函数&#x…

bootstrap table移动端_bootstrap介绍

简介bootstrap是一款前端开发自适应页面的js库&#xff0c;可以让你在开发网页的时候轻松实现网站的PC与移动端兼容&#xff0c;避免在移动端上面出现样式错位等。原理bootstrap的原理是媒体查询CSS3的media&#xff0c;用于检测屏幕&#xff0c;从而改变样式的百分比。结构boo…

Spring Tool Suite 4 自动提示功能

文章目录一、java文件 自动提示二、JavaScript文件 自动提示三、HTML文件 自动提示四、导出配置文件五、编辑导出的配置文件5.1 java提示规则替换5.2 html提示规则替换六、导入配置好的文件一、java文件 自动提示 打开STS→Windows→Preferences→Java→Editor→Content Assis…

关于C++编程中引入头文件的顺序

头文件顺序场景头文件顺序场景 此文仅记录在编写程序的时候&#xff0c;.h或者.cpp引入头文件时&#xff0c;标准库头文件&#xff0c;自己定义的类的头文件的先后顺序。c兼容c语言&#xff0c;故而有时还是涉及到c语言的标准库头文件的引入。这里只记录其引入的顺序。 头文件…

中立安全、赋能产业,UCloud优刻得凭差异化路线进军产业互联

2019年5月28日&#xff0c; 国内领先的中立云计算服务商UCloud优刻得&#xff08;以下简称UCloud&#xff09;在北京召开以“中立安全、赋能产业”为主题的UCloud用户大会暨Think in Cloud北京大会。面对走向纵深的产业互联网&#xff0c;UCloud强调做“不和用户竞争的云”&…

Spring Tool Suite 4 添加反编译插件

文章目录一、进入商店市场二、查找插件&#xff0c;输入jad搜索三、点击安装四、接收协议、安装五、重启Spring Tool Suite 4六、效果图一、进入商店市场 二、查找插件&#xff0c;输入jad搜索 三、点击安装 四、接收协议、安装 五、重启Spring Tool Suite 4 六、效果图

python海龟代码大全_海龟交易系统的Python完全版 | RiceQuant米筐量化社区 交易策略论坛...

zhaoyang-chen 海龟的Python版出炉。为方便对比&#xff0c;这里把java、python两种语言代码同时贴出&#xff0c;回测时间及初始资金均使用页面默认的20140104-20150104&#xff0c;100000.0软妹币。turtle_javapublic class TurtleOriginalStrategy implements IHStrategy {C…

C++中list的一些内置函数

引言 这里记录一些list常用的内置函数&#xff0c;方便日后查看。 内置函数 Lst1.assign() 给list赋值 Lst1.back() 返回最后一个元素 Lst1.begin() 返回指向第一个元素的迭代器 Lst1.clear() 删除所有元素 Lst1.empty() 如果list是空的则返回true Lst1.end() 返回末尾的迭代…

Hadoop精华问答 | NameNode是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的13个年头,这个单词代表的是“核心”&#xff0c;今天我们就来看看关于Hadoop的精华问答。1Q&#xff1a;NameNode是什么&#xff1f;A&…

01_SpringCoud 整合SpringCoud alibaba Nacos

SpringCoud 核心 整合SpringCoud alibaba Nacos 文章目录一、快速构建一个SpringBoot项目二、添加依赖2.1 SpringMVC2.2 nacos客户端2.3 lombok(可以省略)2.4 actuator监控(图形化)2.5 SpringCloud和spring-cloud-alibaba三、添加注解(无)四、写配置信息五、下载和运行nacos5.1…

python怎么读写_python怎么读写文件

python怎么读写文件&#xff1f;读取操作# 一次性读取整个文件内容with open(致橡树.txt, r, encodingutf-8) as f:print(f.read())# 通过for-in循环逐行读取with open(致橡树.txt, moder) as f:for line in f:print(line, end)time.sleep(0.5)print()# 读取文件按行读取到列表…

C++线程处理函数的返回值

引言 关于线程处理函数&#xff0c;常见的可能是返回值为void类型&#xff0c;那线程处理函数是否能定义自己想要的返回值类型呢&#xff0c;这里请看下面的说明。 C线程返回值 应用环境1、传统的方式获取线程返回值2、使用C Promise和future方式3、promise和future介绍 应…

华为在欧注册HUAWEI ARK OS商标或为海外版操作系统命名;联通电信正探索合并?汽车共享品牌car2go近宣布退出中国……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 一加 7 Pro &#xff…