springcloud微服务体系(二)—2.0G版 Consul注册中心搭建

本文介绍了在SpringCloud 2.0体系中选择Consul作为注册中心的原因,包括其完善的功能和与SpringCloud的良好集成。详细阐述了Consul在Linux上的下载、安装及环境变量设置过程,并提供了后台启动服务的方法。接着讲解了如何在客户端配置Consul,包括添加依赖、配置文件和自定义注册标识。最后,展示了客户端启动后的效果,并分享了完整的代码示例仓库。

引言

Springcloud体系中 注册中心目前主流的有多种方案如 eureka、zookeeper、Consul等。

eureka:Springcloud1.0版本的黄金搭档,但目前已宣布停止更新了。
zookeeper:拥有完整的生态体系和社区资源,但和springcloud 契合度不高,灵活性较差。
Consul: 目前Consul 自身功能,和springcloud 对其集成的支持都相对较为完善,而且运维的复杂度较为简单。

因此在2.0后 普遍使用consul作为体系中的注册中心。consul要作为独立的程序部署,再在客户端中引入jar包,进行远程通讯。

Consul部署

一、下载、安装(liunx)

使用wget加粗样式下载安装包 官方地址:https://www.consul.io/downloads.html
完成后将文件 解压

unzip consul_1.1.0_linux_amd64.zip

得到一个文件consul

设置环境变量

vi /etc/profile

根据路径写入
export CONSUL_HOME=/springcloud/consul/
export PATH=$PATH:$MAVEN_HOME/bin:$CONSUL_HOME

保存
source  /etc/profile

查看是否成功
在这里插入图片描述

启动服务端

生产环境
使用nohup 后台启动
对于运行日志,可是使用dev/null 直接抛弃,或者使用定时任务 切分文件

nohup consul agent -server -ui -bootstrap-expect=1 -data-dir=/datadish/lost+found/consul/data -node=lhm-springcould-consul -advertise=47.103.37.69 -bind=0.0.0.0 -client=0.0.0.0 &

下面是我自己写的定时任务,可做参考

# Author: Lhm
# Last Update: 2018.02.24
# Description: nohup.out 日志分割

this_path='/datadish/lost+found/sonsul/data/log'   #根据脚本所在路径
current_date=`date -d "-1 day" "+%Y%m%d"`   #列出时间
cd $this_path
echo $this_path
echo $current_date

do_split () {
    [ ! -d logs ] && mkdir -p logs
    split -b 10m -d -a 4 ./nohup.out   ./logs/nohup-${current_date}  #切分10兆每块至logs文件中,格式为:nohup-xxxxxxxxxx
    if [ $? -eq 0 ];then
        echo "Split is finished!"
    else
        echo "Split is Failed!"
        exit 1
    fi
}

do_del_log() {
    find ./logs -type f -ctime +7 | xargs rm -rf #清理7天前创建的日志
    cat /dev/null > nohup.out #清空当前目录的nohup.out文件
}

if do_split ;then
    do_del_log
    echo "nohup is split Success"
else
    echo "nohup is split Failure"
    exit 2
fi

# crontab -e 添加定时任务:每周第一天的1点执行一次
#0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null

对于consul启动的命令,可以查看下面这个链接
https://blog.csdn.net/liuzhuchen/article/details/81913562

启动后查看效果 端口默认是8500
在这里插入图片描述

配置客户端

添加pom

        <!-- 安全检查 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- consul注册中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

填写配置文件

spring:
  cloud:
    consul:
      host: 192.168.125.125
      port: 8500
      enabled: true
      discovery:
        enabled: true
        serviceName: security
        port: ${server.port}
        health-check-path: /actuator/health
        health-check-interval: 10s
        tags: security
        prefer-ip-address: true

自定义注册标识

package com.lhm.springcloud.security.config;

import com.ecwid.consul.v1.ConsulClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
import org.springframework.cloud.consul.discovery.TtlScheduler;
import org.springframework.cloud.consul.serviceregistry.ConsulRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName RpsConsulServiceRegistryConfig
 * @Author liuheming
 * @Date 2019/4/26 15:07
 * @Version 1.0
 **/
@Configuration
public class RpsConsulServiceRegistryConfig {
    @Autowired(required = false)
    private TtlScheduler ttlScheduler;

    @Bean
    public MyConsulServiceRegistry consulServiceRegistry(
            ConsulClient consulClient,
            ConsulDiscoveryProperties properties,
            HeartbeatProperties heartbeatProperties) {
        return new MyConsulServiceRegistry(
                consulClient, properties, ttlScheduler, heartbeatProperties);
    }

    class MyConsulServiceRegistry extends ConsulServiceRegistry {

        public MyConsulServiceRegistry(ConsulClient client, ConsulDiscoveryProperties properties, TtlScheduler ttlScheduler, HeartbeatProperties heartbeatProperties) {
            super(client, properties, ttlScheduler, heartbeatProperties);
        }

        @Override
        public void register(ConsulRegistration reg) {
            reg.getService().setId(reg.getService().getName() + "-" + reg.getService().getAddress() + "-" + reg.getService().getPort());
            super.register(reg);
        }

    }
}

启动客户端,最终效果如下
在这里插入图片描述

完整代码

https://github.com/liuheming/springcloudDemo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值