Directorio artículo
contorno
- Los principales escenarios: descubrimiento de servicios, el aislamiento de servicio, la configuración de servicio
- HashiCorp empresa desarrolla, utilizar el lenguaje Go
- Una función de registro y marco de descubrimiento de servicios, distribuidos protocolo de consenso, control de estado clave / valor del almacén, soluciones de centros de datos múltiples
- algoritmos uso balsa para garantizar la coherencia, más directo que el complejo algoritmo Paxos, comparativamente hablando, zookeeper utiliza Paxos, y ETCD utilizado es el Raft
- Soporta HTTP y la interfaz de protocolo DNS
- interfaz de gestión web oficial
- Cónsul es una consistencia sólida (CP): La inscripción será más lento que Eureka, el éxito requiere un nodo mayoría considera sólo escribe un registro exitoso. Además, cuando el líder de colgar, durante la reelección de todo el cónsul no está disponible para mantener la consistencia fuerte a expensas de la facilidad de uso.
Descargar e instalar
- Descargar: https: //www.consul.io/downloads.html
- De acuerdo con sus propios sistemas informáticos para descargar los archivos correspondientes a la versión que he descargado ventana, instalación directa.
- Descomprimir el archivo descargado a D: \ en el directorio de software \ cónsul, a continuación, ejecutar el agente cónsul -dev -client = 0.0.0.0 comando para iniciar el cónsul
- A la entrada de http://127.0.0.1:8500/ navegador, puede iniciar sesión en la interfaz de administración cónsul
a cónsul aquí se puede empezar a utilizar el
registro de servicio
cónsul de apoyo para registrar a través de http o forma dns. Estamos más preocupados por los protocolos http, echar un vistazo a es cómo registrar.
- El primero es encontrar las necesidades de conexión para el registro de envío: http: // ip: 8500 / v1 / Catálogo / registro
- datos de la Interfaz, forma JSON:
{
"Datacenter":"dc1",
"Node":"node01",
"Address":"192.168.74.102",
"Service":{
"ID":"mysql-01",
"Service":"mysql",
"tags":["master","v1"],
"Address":"192.168.74.102",
"Port":3306
}
}
- Prueba, en el que puedo utilizar un software de simulación para enviar la solicitud HTTP - Su Fei asistente de desarrollo, envía una solicitud PUT
la prueba es satisfactoria, se puede observar, el alto grado de integración cónsul, puede ser muy fácil de desarrollar. Otra interfaz de adquisición de servicios, está interesado puede mirar a Baidu, no está aquí para mostrar, en springcloud, la introducción de esta dependencia tiene todo lo envuelve.
springcloud introdujo cónsul
proveedores de servicios de consumo y un servicio
Estoy aquí para seguir el ejemplo de Eureka, mediante la construcción de dos springboot servicio simple, que además de un proyecto springboot ordinaria, lo que no es
La introducción de la operación depende cónsul relacionados
<!-- springcloud 提供的对基于consul 的服务发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!-- acuator 的健康检查 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
configuración
server:
port: 9001 #端口
spring:
application:
name: product-service #服务名称
#配置consul
cloud:
consul:
host: 127.0.0.1 #注册中心的主机ip地址
port: 8500 #注册中心的端口
discovery:
#是否需要注册
register: true
#注册的实例id(唯一标志)
instance-id: ${spring.application.name}-1
#服务的名称
service-name: ${spring.application.name}
#服务的请求端口
port: ${server.port}
#指定开启ip地址注册
prefer-ip-address: true
#当前服务的请求ip
ip-address: ${spring.cloud.client.ip-address}
llamada de servicio
Al igual que con el proveedor de servicios, el consumidor del servicio configurado, a continuación, llamar al servicio de los consumidores de servicios. Del mismo modo, necesitamos el apoyo restTemplate, Además, las dependencias cónsules están también integrados de la cinta, y por lo tanto, se puede tratar restTemplate
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
A continuación, utilice el acceso a los datos pertinentes restTemplate del proveedor de servicios
//注入restTemplate
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/get/{id}",method = RequestMethod.GET)
public String get(@PathVariable Long id){
//通过instance里面的信息,组合成url,访问服务接口
return restTemplate.getForObject("http://product-service/product/getProduct/"+id,String.class);
}
Autocomprobación