`
huangyongxing310
  • 浏览: 491983 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

spring cloud ribbon方式使用服务

 
阅读更多
spring cloud ribbon方式使用服务

<?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.midea</groupId>
	<artifactId>base</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>base</name>

	<!-- 设定仓库,按设定顺序进行查找. -->
	<!--<repositories> <repository> <id>public</id> <name>Team Nexus Repository</name> 
		<url>http://10.33.183.113:8081/nexus/content/groups/public</url> <snapshots> 
		<enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> 
		</repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> 
		<name>Team Nexus Repository</name> <url>http://10.33.183.113:8081/nexus/content/groups/public</url> 
		<snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> 
		</pluginRepository> </pluginRepositories> -->

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
	</parent>
	
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<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>

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.4.0</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.4.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
	<build>

	</build>
</project>




server.port=8764
#logging.pattern.level=INFO

#服务器路径
server.context-path=/ribbon


#
#eureka.instance.hostname=localHost
#表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false。
#eureka.client.registerWithEureka=false
#fetchRegistry表示是否从eureka服务器获取注册信息,同上,这里不需要
#eureka.client.fetchRegistry=false
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
#eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/


eureka.client.serviceUrl.defaultZone=http\://localhost\:8761/eurekaServer/eureka/

spring.application.name=ribbon



package com;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;



@SpringBootApplication //spring boot 开启应用
//@EnableDiscoveryClient //Discovery Service”有多种实现,比如:eureka, consul, zookeeper。
@EnableEurekaClient //只能为eureka作用
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

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



package com.Service;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

//ribbon远程调用服务
@Service("callService")
public class CallService {
	final static Logger logger = LogManager.getLogger(CallService.class);

	@Autowired
    RestTemplate restTemplate;

	public String callService(String name) {
		//这里只是把IP和端口号变成了服务的名字(通过HTTP进行远程服务调用的)
        return restTemplate.getForObject("http://eureka-Client/eurekaClient/Test/test",String.class);
    }
}



package com.controller;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.Service.CallService;

import io.swagger.annotations.Api;

@Api(value = "/CallTest", description = "测试接口", tags = "TestController")
@RequestMapping("/CallTest")
@RestController
public class TestController {
	final static Logger logger = LogManager.getLogger(TestController.class);

	@Autowired
	CallService callService;

	@RequestMapping(value = "/test", method = RequestMethod.GET)
	public String test() {
		logger.info("test");

		//调用服务进行远程调用
		String temp = callService.callService("test");

		logger.info("temp == " + temp);

		return temp;
	}
}



当你进行网页调用时就会由8762和8763轮流进行服务

分享到:
评论

相关推荐

    spring cloud Ribbon使用详细例子

    通过这个详细的Spring Cloud Ribbon使用例子,你将能够理解Ribbon的工作方式,如何配置和使用它,以及它在微服务架构中的作用。实践中,你可以根据demoribbon的代码逐步学习,加深对Ribbon的理解,并将其应用于你的...

    SpringCloud使用Ribbon实现负载均衡

    Spring Cloud提供了两种与服务交互的方式:RestTemplate和Feign。Ribbon与这两种客户端结合,实现负载均衡。 - 对于`RestTemplate`,我们可以创建一个配置类,注入`@LoadBalanced`注解的`RestTemplate`,这样每次...

    spring cloud eureka zuul ribbon hystrix feign config 示例

    Spring Cloud 是一个基于 Netflix OSS 的微服务架构框架,它提供了多种工具和服务,帮助开发者构建、配置和管理分布式系统。在给定的标题和描述中,我们看到了几个关键组件:Eureka、Zuul、Ribbon、Hystrix 和 Feign...

    springcloud+eureka+ribbon整合

    Eureka是SpringCloud中的服务发现组件,而Ribbon是客户端负载均衡器。本文将详细介绍如何将这三个组件整合在一起,以及它们在实际应用中的工作原理和配置。 **Eureka服务发现** Eureka是Netflix开源的一个基于REST...

    Spring Cloud实战 _springcloud实战_springcloud_

    《Spring Cloud实战》一书深入探讨了Spring Cloud这一强大的微服务框架,它是当前软件开发领域中最受欢迎的构建微服务架构的工具。Spring Cloud基于Spring Boot的便利性,为开发者提供了全面的微服务开发支持,包括...

    spring-cloud项目_springcloud_springcloud项目_springcloud_spring-clou

    在 Spring Cloud 中,Ribbon 通常与 Eureka 配合使用,自动从服务发现组件获取服务列表并进行负载均衡。 8. **Feign**: Feign 是一个声明式的 HTTP 客户端,它使得构建与 RESTful 服务的客户端变得简单。Feign 可以...

    浅谈Spring Cloud Ribbon的原理

    Spring Cloud Ribbon是一个基于Netflix的开源项目,主要提供客户端的软件负载均衡算法,将中间层服务连接在一起。Ribbon客户端组件提供了一系列完善的配置项,如连接超时、重试等。简单来说,就是在配置文件中列出...

    springcloud ribbon 服务消费者

    springcloud ribbon 服务消费者 http://knight-black-bob.iteye.com/blog/2356224

    SpringCloud集成Python服务

    总结起来,集成SpringCloud与Python服务涉及的关键点包括:Eureka服务发现,Python服务的注册,Ribbon的负载均衡,Java服务调用Python服务的实现以及跨语言通信的处理。通过以上步骤,我们可以实现Java和Python...

    微服务springcloud之ribbon使用demo

    Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一。Ribbon客户端...

    SpringCloud服务消费者(Ribbon+Feign)原理及示例

    本文主要探讨了在SpringCloud中如何使用Ribbon和Feign作为服务消费者的组件,以及它们背后的负载均衡原理。首先,理解服务间通信的基础是HTTP协议,而注册中心Eureka则负责维护服务实例的列表。 Ribbon和Feign都是...

    SpringCloud-创建服务消费者-Ribbon方式示例代码.zip

    在Spring Cloud生态系统中,Ribbon...通过这个Ribbon方式的示例,你可以深入理解Spring Cloud服务消费者如何通过Eureka找到服务提供者,并使用Ribbon进行客户端负载均衡。这有助于你构建更加健壮、可扩展的微服务架构。

    spring cloud ribbon源码解读

    通过分析这些过程,我们可以深入理解Ribbon是如何集成到Spring Cloud中,以及它如何在运行时动态地为不同的服务请求创建相应的负载均衡器实例。此外,了解Ribbon的工作机制可以帮助我们更好地控制和优化微服务间的...

    python服务集成到springcloud平台方法

    通过这种方式,Python服务无需直接暴露在SpringCloud网络中,而是通过Java代理进行通信。 3. **API Gateway:** SpringCloud的API Gateway(如Zuul)可以作为统一的入口,处理所有微服务的请求。Python服务的接口...

    spring cloud feign方式使用服务

    【Spring Cloud Feign服务使用详解】 在分布式系统中,服务间的通信是至关重要的,Spring Cloud Feign就是一种声明式的服务调用工具,它使得服务之间的调用变得简单且直观。Feign是Netflix开源的一个接口绑定工具,...

    springcloud-ribbon负载均衡demo

    在这个"springcloud-ribbon负载均衡demo"中,我们将探讨Ribbon的基本概念、工作原理以及如何在实际项目中进行配置和使用。 首先,Ribbon是Netflix开源的一个Java库,用于客户端的负载均衡。在微服务架构中,每个...

    02Spring Cloud Ribbon:负载均衡的服务调用1

    在Spring Cloud生态系统中,Spring Cloud Ribbon是一个至关重要的组件,它主要负责实现客户端的负载均衡,以确保服务间的调用能够均匀地分散到各个实例上,从而提高系统的整体可用性和性能。Ribbon是Netflix开发的一...

    springCloud 框架,整合feign,ribbon,熔断器

    SpringCloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

Global site tag (gtag.js) - Google Analytics