springcloud微服务总结三 服务客户端
一 springcloud服务理解:
dubbo中服务注册和调用都是都过注解来进行的,dubbo中在service层中调用服务是通过将@service注解改变为dubbo代码架包中的service注解,这样就可以应用
而在springcloud注册中心如果是eureka的话是通过工程客户端进行调用,如果是consol也是的,dubbo的服务是通过rpc引用的,springcloud使用的http来进行注册引用的,所以在很大程度的是区别很大的,需要注意的dubbo的是一个service,而springcloud是一个web工程,本身就是一个模块
二 eureka工程搭建
引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<!--千万注意,不要写成spring-cloud-netflix-eureka-client,写成这样不会报错,但是注册不了服务-->
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependencies>
配置:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/ #eureka注册中心地址
spring:
application:
name: person-service #应用名
启动类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication
@EnableEurekaClient //开启注解,注册服务
public class PersonApplication { public static void main(String[] args) {
SpringApplication.run(PersonApplication.class,args);
}
}
controller
这个别忘记,是提供服务的重要点:
import com.wendao.course.pojo.Course;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class PersonController { @RequestMapping("/Person/{personid}")
public Course findCourse(@PathVariable("personid") Integer personid){
return new Person("微服务架构",,);
}
}
此处代码无法直接运行,需要进行新建person类
三:zookeeper注册中心的服务调用与注册
在服务提供者方需要加入配置:
spring:
application:
name: HelloWorld
cloud:
zookeeper:
connect-string: localhost:
discovery:
enabled: true
server:
port:
endpoints:
restart:
enabled: true
logging:
level:
org.apache.zookeeper.ClientCnxn: WARN
在主程序上加入:
使用@EnableDiscoveryClient注释我们的主类,这将使HelloWorld 应用程序自动发布
服务消费者,引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
同服务提供者一样在主程序中增加@EnableDiscoveryClient 注解。
controller类:
@RestController
public class GreetingController {
@Autowired
private HelloWorldClient helloWorldClient; @GetMapping("/get-greeting")
public String greeting() { return helloWorldClient.HelloWorld(); }
}
声明式服务调用客户端
通过引入spring-cloud-starter-feign组件包使用声明式服务调用方式调用远程服务,使用@FeignClient(“service-name”)注释一个接口并将它自动连接到我们的应用程序中,以便我们以编程方式访问此服务。
@Configuration
@EnableFeignClients
@EnableDiscoveryClient
public class HelloWorldClient {
    @Autowired
    private TheClient theClient;
    @FeignClient(name = "HelloWorld")
    interface TheClient {
        @RequestMapping(path = "/helloworld", method = RequestMethod.GET)
        @ResponseBody
        String HelloWorld();
    }
    public String HelloWorld() {
        return theClient.HelloWorld();
    }
}
配置文件
spring:
  application:
    name: Greeting
  cloud:
    zookeeper:
      connect-string: localhost:2181
server:
  port: 8083
logging:
  level:
    org.apache.zookeeper.ClientCnxn: WARN
运行
HelloWorld REST服务在Zookeeper中注册了自己,Greeting服务通过声明式客户端发现和调用HelloWorld 服务。
现在我们可以运行这两个服务,然后在浏览器中访问 http://localhost:8083/get-greeting,将返回
springcloud微服务总结三 服务客户端的更多相关文章
- springcloud微服务总结五 服务熔断
		
一:雪崩效应 如下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者.A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,导致整个系统瘫痪,雪崩效应就形成了. 雪崩过程: ...
 - springcloud微服务总结六
		
SpringCloud实战7-Config分布式配置管理 分布式环境下的统一配置框架,已经有不少了,比如百度的disconf,阿里的diamand 官方文档对spring Cloud Config的描 ...
 - springcloud微服务总结 zuul
		
一 springcloud网关组件理解: 为什么需要网关呢? 我们知道我们要进入一个服务本身,很明显我们没有特别好的办法,直接输入IP地址+端口号,我们知道这样的做法很糟糕的,这样的做法大有问题,首先 ...
 - springcloud微服务总结二 注册中心
		
一:netflix和springcloud关系 netflix公司开源了很多组件,包括服务注册与发现(Netflix Eureka).断路器(Netflix Hystrix).负载均衡(Netflix ...
 - springcloud微服务总结四 负载均衡
		
一:Ribbon简介 Ribbon是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为 ...
 - SpringCloud Alibaba微服务实战三 - 服务调用
		
导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...
 - 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
		
转载请标明出处: https://www.fangzhipeng.com/springcloud/2017/07/12/sc03-feign/ 本文出自方志朋的博客 最新Finchley版本请访问: ...
 - SpringCloud微服务实战——搭建企业级开发框架(十一):集成OpenFeign用于微服务间调用
		
作为Spring Cloud的子项目之一,Spring Cloud OpenFeign以将OpenFeign集成到Spring Boot应用中的方式,为微服务架构下服务之间的调用提供了解决方案.首先, ...
 - Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
		
Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
 
随机推荐
- LCD 调试总结
			
转自:http://blog.csdn.net/qikaibinglan/article/details/5630246 (1) 液晶显示模式 并行:MCU接口.RGB接口.Vysnc接口 串行:SP ...
 - Python将两个数组合并成一个数组,多维数组变成一维数组
			
1.extend方法 c1 = ["Red","Green","Blue"] c2 = ["Orange"," ...
 - box-shadow 内阴影
			
1.盒子阴影样式单词:box-shadow 2.语法 代表边框间距靠左0 靠上0 和1px阴影范围 阴影颜色为黑色(#000),有inset 代表框内阴影 ,不带inset 代表框外阴影. 注意:bo ...
 - 581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
			
[抄题]: Given an integer array, you need to find one continuous subarray that if you only sort this su ...
 - WCF把书读薄(4)——事务编程与可靠会话
			
WCF把书读薄(3)——数据契约.消息契约与错误契约 真不愧是老A的书,例子多,而且也讲了不少原理方面的内容,不过越读越觉得压力山大……这次来稍微整理整理事务和可靠会话的内容. 十八.事务编程 WCF ...
 - Linux下的fdlisk - l 用法解析-入门篇
			
fdlisk - l 的含义是查看linux下面的磁盘分区大小.这个大小包含了很多信息. 我们来看度娘的一则介绍: FDISK进行硬盘分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置 ...
 - Python基础入门-列表解析式
			
今天我们使用Python中的列表解析式来实现一些简单功能.好了关于列表解析式是什么?我的理解是它可以根据已有列表,高效创建新列表的方式.列表解析是Python迭代机制的一种应用,它常用于实现创建新的列 ...
 - HttpUploader6.2-process版本
			
1.优化JS逻辑,在上传前先同步相同文件进度,提高多用户上传效率. 2.优化文件块保存逻辑,减少相同文件块的写入操作,减少服务器IO操作,提高上传效率. js变化: up6.js新增UrlQuer ...
 - (一)ASP.NET中JavaScript的中英文(多语言)实现方案
			
PS: https://github.com/hzlzh/Front-End-Standards/wiki/HTML-CSS-JS-i18n 本文原始思路起源于此网址,请自行查看. 本文只是简单的一个 ...
 - Sublime for MacOS 使用技巧
			
1.创建软链接,使用命令直接打开sublime编辑器 ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/sub ...