从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心

发布时间:2024-03-27 19:01

紧接上文《从0到1 手把手搭建spring cloud alibaba 微服务大型应用(一) (mini-cloud) 整体架构图》

本文主要说的是开始着手创建项目,我们按照架构图,第一个创建的应该是注册中心

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第1张图片

有人会觉得奇怪,nacos注册中心不是一个zip包嘛,解压了就直接可以双击运行了,但是我觉得这样不太友好,以源码形式集成入项目把nacos ,这里叫register-center当作其中一个服务,既方便自定义开发又方便debug,所以本文主要对如何创建自定义源码启动的nacos 服务进行一步步详细的描述,大体的过程是如下步骤:

##1. 选择版本 clone nacos 代码
##2. 部署mysql 数据库脚本
##3. 源码启动nacos
##4. 新建mini-cloud 项目
##5. 新建register-center 注册中心服务
##6. install nacos 依赖jar
##7. 剪裁nacos pom 到mini-cloud
##8. copy nacos-console 代码到register-center
##9. 验证nacos 服务

首先我们来下载nacos,我这里选的是1.4.1,因为之前开发时用的就是这个版本,大家可以换成自己需要的源码版本 GitHub - alibaba/nacos at 1.4.1 

下载好后导入到开发工具里面并且引入maven 完成后如下图

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第2张图片

红框的为启动main 服务 

为了让nacos源码可以顺利启动,我们需要部署一份mysql 脚本,脚本在这里

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第3张图片

大家新创建一个数据库然后导入脚本,我创建的数据库名字叫做nacos_mini_cloud,大家可以改成自己的名称

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第4张图片从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第5张图片

数据库创建完成后,开始启动源码,启动之前需要设置一下启动模式为单机模式,具体部署的时候需要设置为集群模式,不在本文范围,后续有单独说明,单机模式具体位置加在这里

 System.setProperty("nacos.standalone", "true");
 System.setProperty("nacos.core.auth.enabled", "false");

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第6张图片

 然后配置一下数据库连接地址,记得改成刚刚创建的数据库

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第7张图片

 改好配置之后,我们启动nacos

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第8张图片

启动没问题,然后我们访问http://localhost:8848/nacos 看一下,用户名密码默认为 nacos nacos

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第9张图片

 80是我本机的ip,也没有问题,这样我们首先在nacos自己的源码启动成功了

下面我们准备剪裁集成源码到我们自己的项目里面,首先我们需要先创建一个项目和一个注册中心服务,因为我们要搭建的是一个微服务框架,所以不会一个服务一个项目,需要创建一个项目并把各个组件以module形式集成 

我创建的项目名叫mini-cloud ,注册中心的服务名称叫做register-center 都是空项目,创建好后的目录结构如下

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第10张图片

然后我们开始移植nacos-console 启动所需的pom依赖到我们自己的项目里,首先看看它主要需要哪些依赖

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第11张图片

主要是这三个依赖,那么我们首先需要将源码install一下,让这几个源码变为jar包,另外大家要注意俩项目要使用同样的本地maven库,不然install之后的jar无法被新项目引用到

 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第12张图片

 然后将所有nacos 根pom 以及nacos-console pom文件依赖都拷贝到自己的新项目

mini-cloud pom 以及register-center pom内,如下图

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第13张图片

 为了方便大家我直接整体贴出来两个pom

根pom



    4.0.0

    org.mini-cloud
    mini-cloud
    pom
    1.0-SNAPSHOT
    
        register-center
    

    
        1.4.1
        com.alibaba.nacos
        UTF-8
        UTF-8
        
        1.8
        1.8
        
        false
        true
        jacoco
        
        ${project.basedir}/../test/target/jacoco-it.exec
        file:**/generated-sources/**,**/test/**

        
        2.2
        1.0.2
        2.7
        1.4.1
        3.5.1
        2.10.4
        3.0.1
        3.8
        0.12
        3.0.2
        4.3.0
        0.7.8
        2.20
        3.0.4
        3.0.2
        1.6
        2.19.1
        3.0.0
        3.1.1
        
        1.0-beta-4
        1.3.0

        
        2.2.6.RELEASE
        3.0
        3.4
        2.2
        3.2.2
        1.2
        1.4
        1.2
        1.7.7
        1.2.3
        2.13.3
        4.4.1
        4.5
        4.1.3
        8.0.16
        10.14.2.0
        2.1
        1.0
        2.10.4
        2.10.4
        1.9.13
        0.11.2
        4.1.42.Final
        4.1.31.Final
        2.0.0-RC1
        24.1.1-jre
        1.2
        0.4.1
        1.24.0
        1.17.0
        3.8.0
        1.24.0
        4.0.63
        0.9.11
        1.10.19
        1.3
        0.5.0
        9.0.37
        0.30
        3.4.2
        1.3.5
        1.3.5

    
    
    
        
            
                
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot-dependencies.version}
                pom
                import
            

            
            
                ${nacos-name}
                nacos-config
                ${nacos-version}
            
            
                ${nacos-name}
                nacos-core
                ${nacos-version}
            
            
                ${nacos-name}
                nacos-naming
                ${nacos-version}
            
            
                ${nacos-name}
                nacos-api
                ${nacos-version}
            
            
                ${project.groupId}
                nacos-client
                ${nacos-version}
            

            
                ${project.groupId}
                nacos-common
                ${nacos-version}
            
            
                ${project.groupId}
                nacos-cmdb
                ${nacos-version}
            
            
                ${project.groupId}
                nacos-console
                ${nacos-version}
            
            
                ${project.groupId}
                nacos-distribution
                ${nacos-version}
            

            
                ${nacos-name}
                nacos-address
                ${nacos-version}
            

            
                ${nacos-name}
                nacos-istio
                ${nacos-version}
            
            
                ${project.groupId}
                nacos-consistency
                ${nacos-version}
            
            
                ${nacos-name}
                nacos-auth
                ${nacos-version}
            
            
                ${nacos-name}
                nacos-sys
                ${nacos-version}
            

            
                javax.servlet
                servlet-api
                ${servlet-api.version}
                provided
            

            
            
                com.zaxxer
                HikariCP
                ${HikariCP.version}
            

            

            
                com.caucho
                hessian
                ${hessian.version}
            

            
            
                org.apache.commons
                commons-lang3
                ${commons-lang3.version}
            

            
                commons-io
                commons-io
                ${commons-io.version}
            

            
                commons-collections
                commons-collections
                ${commons-collections.version}
            

            
                commons-logging
                commons-logging
                ${commons-logging.version}
            

            
                commons-dbcp
                commons-dbcp
                ${commons-dbcp.version}
            

            
                commons-cli
                commons-cli
                ${commons-cli.version}
            

            
            
                org.slf4j
                slf4j-api
                ${slf4j-api.version}
            

            
                ch.qos.logback
                logback-classic
                ${logback.version}
            

            
                ch.qos.logback
                logback-core
                ${logback.version}
            

            
                org.apache.logging.log4j
                log4j-core
                ${log4j.version}
            

            
                org.apache.logging.log4j
                log4j-api
                ${log4j.version}
            

            
                org.apache.logging.log4j
                log4j-slf4j-impl
                ${log4j.version}
            

            
            
                org.apache.httpcomponents
                httpcore
                ${httpcore.version}
            

            
                org.apache.httpcomponents
                httpclient
                ${httpclient.version}
                
                    
                        commons-logging
                        commons-logging
                    
                
            

            
                org.apache.httpcomponents
                httpasyncclient
                ${httpasyncclient.version}
            

            
            
                mysql
                mysql-connector-java
                ${mysql-connector-java.version}
            

            
                org.apache.derby
                derby
                ${derby.version}
            

            
            
                com.alipay.sofa
                jraft-core
                ${jraft-core.version}
                
                    
                        com.alipay.sofa
                        bolt
                    
                    
                        org.apache.logging.log4j
                        log4j-api
                    
                    
                        org.apache.logging.log4j
                        log4j-core
                    
                    
                        org.apache.logging.log4j
                        log4j-slf4j-impl
                    
                    
                        org.apache.logging.log4j
                        log4j-jcl
                    
                
            

            
                com.alipay.sofa
                rpc-grpc-impl
                ${rpc-grpc-impl.version}
            

            
            
                cglib
                cglib-nodep
                ${cglib-nodep.version}
            

            
                net.jcip
                jcip-annotations
                ${jcip-annotations.version}
            

            
                com.fasterxml.jackson.core
                jackson-core
                ${jackson-core.version}
            

            
                com.fasterxml.jackson.core
                jackson-databind
                ${jackson-databind.version}
            
            
                org.codehaus.jackson
                jackson-core-asl
                ${jackson-core-asl.version}
            

            
                io.jsonwebtoken
                jjwt-api
                ${jjwt.version}
            
            
                io.jsonwebtoken
                jjwt-impl
                ${jjwt.version}
                runtime
            
            
                io.jsonwebtoken
                jjwt-jackson
                ${jjwt.version}
                runtime
            

            
                io.netty
                netty-all
                ${netty-all.version}
            

            
                io.netty
                netty-common
                ${netty-common.version}
            

            
                org.apache.mina
                mina-core
                ${mina-core.version}
            

            
                com.google.guava
                guava
                ${guava.version}
            

            
                org.javatuples
                javatuples
                ${javatuples.version}
            

            
                com.github.keran213539
                commonOkHttp
                ${commonOkHttp.version}
                test
            

            

            
                io.grpc
                grpc-netty-shaded
                ${grpc-java.version}
            
            
                io.grpc
                grpc-protobuf
                ${grpc-java.version}
            
            
                io.grpc
                grpc-stub
                ${grpc-java.version}
            
            
                io.grpc
                protoc-gen-grpc-java
                ${grpc-java.version}
                pom
            
            
                com.google.api.grpc
                proto-google-common-protos
                ${proto-google-common-protos.version}
            

            

            
                com.google.protobuf
                protobuf-java
                ${protobuf-java.version}
            

            
                org.reflections
                reflections
                ${reflections.version}
            

            
                org.mockito
                mockito-all
                ${mockito-all.version}
            

            
                org.hamcrest
                hamcrest-all
                ${hamcrest-all.version}
            

            
                io.prometheus
                simpleclient
                ${prometheus-simpleclient.version}
            

            
                org.apache.tomcat.embed
                tomcat-embed-jasper
                ${tomcat-embed-jasper.version}
            

            
                com.google.truth
                truth
                ${truth.version}
            
        
    
    
        
            
            sona
            https://oss.sonatype.org/content/repositories/snapshots/
        
        
            sona
            https://oss.sonatype.org/service/local/staging/deploy/maven2/
        
    

 register-center pom



    
        mini-cloud
        org.mini-cloud
        1.0-SNAPSHOT
    
    4.0.0

    register-center

    jar
    http://nacos.io
    
        UTF-8
    

    

        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.nacos
            nacos-api
        
        
            com.alibaba.nacos
            nacos-core
        
        
            com.google.guava
            guava
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            commons-io
            commons-io
        
        
            mysql
            mysql-connector-java
        
        
            org.apache.derby
            derby
        
        
            ch.qos.logback
            logback-classic
        

        
        
            org.aspectj
            aspectjrt
        
        
            cglib
            cglib-nodep
        
        
            org.apache.httpcomponents
            httpasyncclient
        

        
        
            org.springframework.boot
            spring-boot-starter-tomcat
        

        
            com.fasterxml.jackson.core
            jackson-core
        
        
            com.fasterxml.jackson.core
            jackson-databind
        
        
            net.jcip
            jcip-annotations
            true
        
        
            org.apache.commons
            commons-lang3
        
        
            io.micrometer
            micrometer-registry-prometheus
        
        
            io.micrometer
            micrometer-registry-influx
        
        
            io.micrometer
            micrometer-registry-elastic
        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            com.alibaba.nacos
            nacos-config
            1.4.1
        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        
        
            com.alibaba.nacos
            nacos-naming
            1.4.1
        

        
            com.alibaba.nacos
            nacos-istio
            1.4.1
        

        
        
        
            org.slf4j
            log4j-over-slf4j
        
        
        
            org.slf4j
            jcl-over-slf4j
        
        
        
            org.slf4j
            jul-to-slf4j
        
        
        
            org.mockito
            mockito-core
            test
        
        
            org.springframework.boot
            spring-boot-starter-security
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.1.17.RELEASE
                
                    
                        
                            repackage
                        
                    
                
            
        
        
            
                src/main/resources
                
                    static/console-ui/.vscode/**
                
            
        
    

    
        

            
                org.codehaus.mojo
                findbugs-maven-plugin
            
            
                org.apache.maven.plugins
                maven-assembly-plugin
                
                    
                        jar-with-dependencies
                    
                
            
        
    






































然后拷贝nacos-console 代码到register-center 内

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第14张图片

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第15张图片

记得将这个dir 路径设置上值

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第16张图片

然后我们直接启动register-center 看看效果

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第17张图片

ok 没有问题,然后我们再浏览器访问看看效果

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第18张图片

也没有问题,为了确保没问题我们自己用命令向nacos 注册一个临时服务试试

具体命令

 curl -X POST 'http://192.168.1.80:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

我用的是在一个linux向我本机发起注册

然后看看下效果

 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(二) (mini-cloud) 创建项目以及搭建源码启动版nacos 注册中心_第19张图片

确实注册完毕,那么我们的注册中心服务就搭建完成了,因为是演示,所以会有些粗糙,大家见谅

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号