• 10分钟快速上手 SpringCloudAlibaba(nacos注册中心)


    搭建公司新产品的框架,这种艰巨的工作,当然是交给优秀的我来做了,骄傲下,哈哈。

    最终选型为 https://spring.io/projects/spring-cloud-alibaba

    初次使用 spring-cloud-alibaba并不容易,看了各种教程最终发现还是官方文档最靠谱,希望这篇博客能成为仅次于官方的安装教程。

    本篇博客旨在帮助新了解该框架的同学们,能够快速安装使用。

    以下是搭建的流程及重点内容:

    nacos

    (1)安装nacos

    nacos的官方文档:https://nacos.io/en-us/docs/quick-start.html

    其中下载安装包为:

    Select the latest stable version from https://github.com/alibaba/nacos/releases

    (2)运行:

    我这边下载的是最新zip安装包

    解压:unzip nacos-server-$version.zip

    进入操作目录:cd nacos/bin

    启动:sh startup.sh -m standalone (后面参数代表单机模式运行)

    关闭服务:sh shutdown.sh

    (3)服务与配置管理


    服务注册
    curl -X POST'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

    服务发现
    curl -X GET'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

    发布配置
    curl -X POST“ http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld”

    获取配置
    curl -X GET“http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.config&group=test”

    (4)启动后登录

    http://localhost:8848/nacos

    用户名:nacos

    密码:nacos

    登录之后,哇塞,这不就是阿里云的后台嘛,哈哈,浓浓的阿里风格。

    (5)作为配置中心与Spring整合,dataId与nacos后台保持一致

    import com.alibaba.nacos.api.annotation.NacosProperties;
    import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
    import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
    @NacosPropertySource(dataId = "nacos-config", autoRefreshed = true)
    public class NacosConfigApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosConfigApplication.class, args);
        }
    
    }

    在具体的业务中使用

    @RestController
    @RequestMapping
    public class ConfigController {
    
        @NacosValue(value = "${project}", autoRefreshed = true)
        private String project;
    
        @GetMapping("/name")
        public String name() {
            return project;
        }
    
    }
    

     

    Gateway

    网关,用于负载、分流等。

    这个比较简单,目前我用此主要是做了token验证、流量分发等。

    Elasticsearch

    集成es,下载及安装操作在我之前的博客中写过。

    (1)添加依赖

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!--
    可以只添加上方两个依赖即可
    
    以下lombok为了简化代码,建议使用
    -->
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    

    (2)配置yml,用于连接es

    # elasticsearch
    spring.elasticsearch.rest.uris = http://39.100.88.230:9200
    spring.elasticsearch.rest.connection-timeout = 5s
    

    (3)创建Bean

    //通过这个注解可以声明一个文档,指定其所在的索引库和type
    @Document(indexName = "testbean", type = "docs")
    @Data
    public class TestBean implements Serializable {
        
        //这个ID是必须的,作为文档的唯一标示
        @ID
        private Long id;
    
        private String content;
        
    }
    

    (4)es接口,用于业务实现

    // 继承CRUD,第一个泛型是实体类类型,第二个泛型是id的类型
    public interface TestRepository extends ElasticsearchRepository<TestBean, Long> {
        
    }

    RocketMQ

    (1)下载RocketMQ

    http://rocketmq.apache.org/dowloading/releases/
    

    (2)安装

    unzip rocketmq-all-4.7.1-source-release.zip
    cd rocketmq-all-4.7.1/

    # 官方文档此处要编译,我下载的二进制包没有编译也可以启动。 mvn -Prelease-all -DskipTests clean install -U cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1

    (3)启动服务

    Start Name Server
      > nohup sh mqnamesrv &
      > tail -f ~/logs/rocketmqlogs/namesrv.log
      The Name Server boot success...
    
    
    Start Broker
      > nohup sh bin/mqbroker -n localhost:9876 &
      > tail -f ~/logs/rocketmqlogs/broker.log 
      The broker[%s, 172.30.30.233:10911] boot success...

    (4)关闭服务

    > sh bin/mqshutdown broker
    The mqbroker(36695) is running...
    Send shutdown request to mqbroker(36695) OK
    
    > sh bin/mqshutdown namesrv
    The mqnamesrv(36664) is running...
    Send shutdown request to mqnamesrv(36664) OK
    

    (5)集成到Spring服务中

    <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
    </dependency>
    

     (6)常见问题,Java_Home

    JAVA_HOME 环境变量未配置,可设置RocketMQ的JDK环境 , 打开bin目录下 runserver.sh 和 runbroker.sh, 将设置JAVA_HOME的第二三行注释掉,在第一行设置JDK的安装目录。如下所示:
    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
    #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
    #[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!
    

    Redis

    集成es,下载及安装操作在我之前的博客中写过。

    Sentinel

    面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

    项目还处于开发阶段,暂时没有集成。

    SkyWalking

    Skywalking分布式追踪与监控,由于还没有编写业务,暂时没有集成。

  • 相关阅读:
    玩转树莓派《二》——用python实现动画与多媒体
    pygame(一)
    玩转树莓派(一)
    pythonchallenge(七)
    springmvc定时器
    maven打包成第三方jar包且把pom依赖包打入进来
    mybatis之动态SQL
    黑马12期day01之html&css
    千万级数据表删除特定字断
    自动跳转
  • 原文地址:https://www.cnblogs.com/pzyin/p/13256244.html
Copyright © 2020-2023  润新知