安装Consul服务注册中心

1.必须先有服务发现 [服务发现]Euerka、Consul的对比.note

2.https://www.consul.io/downloads.html 下载 Consul


3.解压下载的压缩包

4.把里面的东西放到D:\SpringCloudServiceRegister


5.配置环境变量


D:\SpringCloudServiceRegister


然后在cmd:

consul agent -dev


说明启动成功访问:http://localhost:8500


 

为了演示如何由各种独立的平台组合微服务,将为这个服务使用Jersey,然后为下一服务使用Spring REST

创建SpringBoot应用程序:

什么是Jersey:

[Jersey]什么是Jersey框架.note

 

把一个项目变成微服务:

 

配置application.yml

spring: application: name: portfolio-service #微服务名字 server: port: 57116 #微服务端口,可以指定一个端口或者使用端口0来让应用程序使用一个可用的端口

在启动类上加注解

@EnableDiscoveryClient 为了让注册中心发现这个服务


pom中必须导入:

<spring-cloud.version>Greenwich.SR1</spring-cloud.version> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!--微服务注册中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>

最后会是下面这样:

<?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>cn.fansooo</groupId> <artifactId>micro</artifactId> <version>0.0.1-SNAPSHOT</version> <name>micro</name> <description>Microservice Project</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</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>${spring-cloud.version}</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> </project>

  

负载均衡

 

1.在pom中添加依赖

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <!--OKHTTP实现--> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.9.0</version> </dependency>

2.多个服务之间要调用,是通过ip地址调用的。比如192.10.1.1/dou那么如何调用呢,就用HttpClient来实现,

HttpClient是一个通信库,可以看成具有浏览器的功能就是访问网络资源,但没有界面。

Spring框架对RESTful方式的http请求做了封装,来简化操作

public class ItemService { // Spring框架对RESTful方式的http请求做了封装,来简化操作 private RestTemplate restTemplate; public Item queryItemById(Long id) { return this.restTemplate.getForObject("http://127.0.0.1:8081/item/" + id, Item.class); } }

okhttp是一个封装URL,比HttpClient更友好易用的工具。官网:http://square.github.io/okhttp/

RestTemplate底层默认使用的jdk的标准实现,如果我们想让RestTemplate的底层使用okhttp,

非常简单:

1、添加okhttp依赖

<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.9.0</version> </dependency>

2、设置requestFactory

public RestTemplate restTemplate(){ return new RestTemplate(new OkHttp3ClientHttpRequestFactory()); }