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与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
随机推荐
- MySQL的blob类型
MySQL中的Blob类型 MySQL中存放大对象的时候,使用的是Blob类型.所谓的大对象指的就是图片,比如jpg.png.gif等格式的图片,文档,比如pdf.doc等,以及其他的文件.为了在数据 ...
- 算法优化》关于1D*1D的DP的优化
关于这一主题的DP问题的优化方法,我以前写过一篇博客与其有关,是关于对递推形DP的前缀和优化,那么这种优化方法就不再赘述了. 什么叫1D*1D的DP捏,就是一共有N种状态,而每种状态都要N种决策,这就 ...
- 在Build Path中包含其他工程
------------siwuxie095 在 TestBuildPath 的 Build Path 中包含 SupportProje ...
- 724. Find Pivot Index 找到中轴下标
[抄题]: Given an array of integers nums, write a method that returns the "pivot" index of th ...
- Docker学习笔记_安装和使用Apache
一.准备 1.宿主机OS:Win10 64位 2.虚拟机OS:Ubuntu18.04 3.账号:docker 二.安装 1.搜索镜像 ...
- g2o:一种图优化的C++框架
转载自 Taylor Guo g2o: A general framework for graph optimization 原文发表于IEEE InternationalConference on ...
- Entity Framework 6.0 Tutorials(4):Database Command Logging
Database Command Logging: In this section, you will learn how to log commands & queries sent to ...
- 编写高质量代码改善C#程序的157个建议——建议49:在Dispose模式中应提取一个受保护的虚方法
建议49:在Dispose模式中应提取一个受保护的虚方法 在标准的Dispose模式中,真正的IDisposable接口的Dispose方法并没有做实际的清理工作,它其实是调用了下面的这个带bool参 ...
- LSI SAS3008 RAID配置方法
7.1 概述 LSI SAS3008 RAID 控制卡(以下简称LSI SAS3008)是基于Fusion-MPT™ (消息传递技术)架构的8端口12Gbit/s SAS控制器,并采用PCIe3.0 ...
- laravel中chunk方法使用外部变量以及改变该变量