JAVA 多用户商城系统b2b2c- 服务消费者(rest+ribbon)
一、ribbon简介
Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients. Feign already uses Ribbon, so if you are using @FeignClient then this section also applies.
-----摘自官网
需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。
ribbon 已经默认实现了这些配置bean:
IClientConfig ribbonClientConfig: DefaultClientConfigImpl
IRule ribbonRule: ZoneAvoidanceRule
IPing ribbonPing: NoOpPing
ServerList ribbonServerList: ConfigurationBasedServerList
ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter
ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer
二、建一个服务消费者
重新新建一个spring-boot工程,取名为:service-ribbon;
在它的pom.xml文件分别引入起步依赖spring-cloud-starter-eureka、spring-cloud-starter-ribbon、spring-boot-starter-web,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.forezp</groupId><artifactId>service-ribbon</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-ribbon</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.RC1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>复制代码
在工程的配置文件指定服务的注册中心地址为http://localhost:8761/eureka/,程序名称为 service-ribbon,程序端口为8764。配置文件application.yml如下:
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
server:port: 8764
spring:application:name: service-ribbon复制代码
在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceRibbonApplication {public static void main(String[] args) {SpringApplication.run(ServiceRibbonApplication.class, args);}@Bean@LoadBalancedRestTemplate restTemplate() {return new RestTemplate();}}复制代码
写一个测试类HelloService,通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名,代码如下:
@Service
public class HelloService {@AutowiredRestTemplate restTemplate;public String hiService(String name) {return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);}}复制代码
写一个controller,在controller中用调用HelloService 的方法,代码如下:
/*** Created by fangzhipeng on 2017/4/6.*/
@RestController
public class HelloControler {@AutowiredHelloService helloService;@RequestMapping(value = "/hi")public String hi(@RequestParam String name){return helloService.hiService(name);}}复制代码
在浏览器上多次访问http://localhost:8764/hi?name=forezp,浏览器交替显示:
hi forezp,i am from port:8762
hi forezp,i am from port:8763
这说明当我们通过调用restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class)方法时,已经做了负载均衡,访问了不同的端口的服务实例。
JAVA 多用户商城系统b2b2c
转载于:https://juejin.im/post/5ca46daa6fb9a05e122c8069
JAVA 多用户商城系统b2b2c- 服务消费者(rest+ribbon)相关推荐
- JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)
在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...
- JAVA 多用户商城系统b2b2c-服务容错保护(Hystrix依赖隔离)
依赖隔离 "舱壁模式"对于熟悉Docker的读者一定不陌生,Docker通过"舱壁模式"实现进程的隔离,使得容器与容器之间不会互相影响.而Hystrix则使用该 ...
- java多用户商城系统架构之第一篇——总的介绍
系列文章主要是针对Java商城相关架构演化的介绍,不讲解具体业务.技术等. 最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码.表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己 ...
- JAVA 多用户商城系统b2b2c-kafka处理超大消息
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好.但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如 ...
- JAVA 多用户商城系统b2b2c-Spring Cloud Stream 介绍
介绍Spring Cloud Stream 电子商务平台源码请加企鹅求求:一零三八七七四六二六. Spring Cloud Stream是构建消息驱动的微服务应用程序的框架.Spring Cloud ...
- JAVA 多用户商城系统b2b2c---配置中心和消息总线
Spring Cloud Bus 电子商务平台源码请加企鹅求求:一零三八七七四六二六. Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其 ...
- 分享大型Java多用户商城系统开发历程
最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码.表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城. 下面是开发的一些心得体会,权且记录下来,给自己做个记录把. ...
- 搭搭云-超级应用平台 与JNPF Java多用户商城系统源码
搭搭云 搭搭云是非常灵活的一站式企业管理超级平台,企业在一个云端账户中即可使用包含CRM.OA.进销存.HR.财务.项目管理.ERP在内的全系列SaaS软件:应用软件开发者可以基于搭搭云低代码PaaS ...
- 搭搭云-超级应用平台 与JNPF Java多用户商城系统源码 最新版3.4.7源码折扣
搭搭云 搭搭云是非常灵活的一站式企业管理超级平台,企业在一个云端账户中即可使用包含CRM.OA.进销存.HR.财务.项目管理.ERP在内的全系列SaaS软件:应用软件开发者可以基于搭搭云低代码PaaS ...
- JAVA 版多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C 产品概述
随着京东天猫的上市和不断增长,网上购物商城的运营模式仍然非常火爆.如果你想发展企业,有必要立足电子商务背景,传统企业或企业家希望借助多用户商城系统 B2B2C 建立类似京东和天猫的电子商务平台. 看似 ...
最新文章
- J2EE分布式框架之开发环境部署(上)
- php中判断常量,变量,函数是否存在的方法示例
- 闹乌龙!京东云辟谣:停止云服务?根本没那回事儿
- 真不知写什么了,也就是很久没有做什么了
- html下拉菜单的子目录,html - 带有下拉菜单的子菜单的垂直下拉菜单 - 堆栈内存溢出...
- android theme继承原理,android – 使用Holo父主题从Theme.Light继承editText
- 测视力距离5米还是3米_7岁男孩近视猛涨300度!眼科专家提醒:保护孩子视力这一点很关键...
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析...
- [BZOJ4817]树点涂色
- 最详细,快速入门Web前端开发的正确姿势
- Android页面传值b,android数据传递(一)之activityA传递到activityB
- 帆软复选框选中并打印(按某种格式打印)数据分析、报填可用
- fastboot模式下无法找到设备,不能使用fastboot命令,需要安装驱动
- linux读取U盘操作
- qttabbar文件浏览器突然坏掉了!
- Java学习-Java系统介绍
- css 设置背景色渐变、字体颜色渐变
- vc c语言标准库头文件,VC++ 6.0中添加库文件和头文件
- Nano板使用USB与PX4通信
- C++中的FILL和MEMSET(zzl) 的区分
热门文章
- 数据结构与算法之美-字符串匹配(上)
- tcp/ip网络协议学习
- [整理]苹果审核被拒后,返回崩溃日志应该怎么分析处理
- 关于css布局的定位问题
- Project: Individual Project - Word frequency program
- 10115 - Automatic Editing
- 1.枚举类型、声明指针、常量、存储类型、运算符优先级记忆
- 复习HTTP 14.2 HTTP Header - Accept-Charset (RFC 2616)
- Parallels Desktop如何检查Windows系统是否具有EFI/UEFI或 Legacy BIOS固件接口
- Notion for Mac(多功能办公笔记软件)V2.0.10官方版