2019-12-15 Spring Cloud微服务从入门到入土(1)项目搭建与公共API模块

项目地址:https://gitee.com/QNKCDZ0/WenDev-Microservice

为什么要做微服务?

最初的目的其实很简单——好奇啊!整天听说微服务有多么多么厉害,在大型项目上的表现有多么多么好。本着“既然好奇那就一定要自己试一试”的心态,开搞了。

为什么使用Spring Cloud?

目前在Java微服务领域,比较成熟的全套解决方案非Spring Cloud莫属了。既然初学,还是从比较简单的开始。

为什么使用Spring Cloud Alibaba?

之前,Spring Cloud的主流解决方案基本都是使用Netflix的那一套,但是Eureka闭源、Hystrix停止更新,以及Zuul 1.x性能不是很好让我觉得只用Netflix那一套肯定是不行的。正好,阿里也为Spring Cloud提供了一套完整的解决方案,所以就选择了Spring Cloud Alibaba。

正式开始!

Spring Cloud我选择了最新的Hoxton版本(或者应该叫H版?)。

创建一个父工程wendev-parent,用于整个项目的依赖管理和模块管理。

创建pom.xml。以后需要什么依赖,就可以添加到这个文件中,然后在模块里引用:



    4.0.0

    site.wendev.microservice
    wendev-microservice
    0.0.1-SNAPSHOT
    pom

    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
    

    
        UTF-8
        4.12
        0.2.2.RELEASE
        2.10.1
        2.7.4.1
    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.RELEASE
                pom
                import
            

            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.1.RELEASE
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                0.9.0.RELEASE
                pom
                import
            

            
            
                org.apache.dubbo
                dubbo
                ${dubbo.version}
            
            
                org.apache.dubbo
                dubbo-registry-nacos
                ${dubbo.version}
            
            
                org.apache.dubbo
                dubbo-spring-boot-starter
                ${dubbo.version}
            
            
                org.apache.dubbo
                dubbo-serialization-kryo
                ${dubbo.version}
            

            
            
                com.alibaba.spring
                spring-context-support
                1.0.5
            

            
            
                junit
                junit
                ${junit.version}
                test
            

            
            
                org.springframework.cloud
                spring-cloud-starter-alibaba-nacos-config
                ${nacos.version}
            
            
                org.springframework.cloud
                spring-cloud-starter-alibaba-nacos-discovery
                ${nacos.version}
            
            
                com.alibaba.cloud
                spring-cloud-starter-alibaba-nacos-discovery
                
                    
                        org.springframework.cloud
                        spring-cloud-starter-netflix-ribbon
                    
                
            

            
            
                mysql
                mysql-connector-java
                8.0.17
            
            
                org.springframework.boot
                spring-boot-starter-data-jpa
            

            
            
                io.zipkin.java
                zipkin
                ${zipkin.version}
            
            
                io.zipkin.java
                zipkin-server
                ${zipkin.version}
            
            
                io.zipkin.java
                zipkin-autoconfigure-ui
                ${zipkin.version}
            
        
    

然而在后面的开发中经常会遇到不知道少了哪个依赖而启动不起来的状况。。。这个会在后续文章中慢慢总结。

公共API模块

因为使用Dubbo作为RPC框架,所以必须要有一个公共的API模块。此外,这个模块还可以用来存放一些公共资源,比如实体类等。现在就来建立这个模块。

wendev-parent下新建一个Maven module,名为wendev-api

创建pom.xml



    4.0.0

    
        site.wendev.microservice
        wendev-microservice
        0.0.1-SNAPSHOT
    

    wendev-api

    
        
        
            org.projectlombok
            lombok
            1.18.10
            provided
        
    

在这个module中单独引入lombok主要是为了方便以后创建实体类时使用。

因为目前我们什么服务都没有,所以这个公共API模块暂时还是空的。在后续开发中向这个模块中添加了一些API后,需要执行mvn install将它安装,以便其他模块进行引用(否则启动的时候可能会报找不到包的错误,但也有可能不报,所以最好还是mvn install一下)。

你可能感兴趣的:(2019-12-15 Spring Cloud微服务从入门到入土(1)项目搭建与公共API模块)