首页 > 编程知识 正文

微服务系统架构,阿里云微服务架构

时间:2023-05-04 06:20:23 阅读:52159 作者:1071

前言基于maven构建了微服务项目的基本项目体系结构。 微服务是指将多个业务分成多个项目进行处理,并知道如何统一管理这些项目。 maven可以引出亲子项目的结构,方便地提供。

创建集成管理控制插件版本聚合项目父项目选择STS、file-new-other…、Maven下的Maven Project,然后创建父项目,如下图所示。 请注意,打包选择了pom。

创建成功后,请保存pom.xml。 将SpringCloud和SpringCloud-alibaba度量版本的配置添加到pom中。

project xmlns=' http://maven.Apache.org/POM/4.0.0 ' xmlns : xsi=' http://www.w3.org/2001/XML方案ins ttins maven-4.0.0.xsd ' model版本4.0.0/modelversiongroupidcom.miming artifactidversion0.0.1- snapshot/verrsion packagingparentgroupidorg.spring framework.boot/groupidartitive artifactidversion2.1.5. release/version/parentprort Java.version spring-cloud.versiongreeer spring-cloud.version spring-cloud-Alibaba.version0.9.0. release/spring-cloud-Alibaba.version lombok.version-- spring-cloud主控版本管理--dependencygroupidorg.spring framework . groupidartifactidspring-cloud-dependencies/artifactidversion $ { spring-cloud.version }/versiontypepom/typescopes -- spring-cloud-alibaba主控版本管理--dependencygroupidorg.spring framework.cloud/groupidartifactidspring-cloud-Alibaba artifactidversion $ { spring-cloud-Alibaba.version }/versiontypepom/typescocon -- lombok主版本控制- -从属gt

; <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> </dependencies></project>

在pom.xml的dependencyManagement标签中已经将后续依赖的Spring Clould版本以及Spring Cloud Alibaba版本。

因为Spring Cloud Alibaba是基于Spring Cloud Common的规范实现的,所以在构建项目时,一定要注意Spingboot、Spring Cloud和Spring Cloud Alibaba三者之间的关系,具体的版本关系如下

SpringClould VersionSpringCloud Alibaba VersionSpringBoot VersionGreenwich0.9.X.RELEASE2.1.X.RELEASEFinchley0.2.X.RELEASE2.0.X.RELEASEEdgware0.1.X.RELEASE1.5.X.RELEASEDalston0.1.X.RELEASE1.5.X.RELEASE

另外在父项目的pom.xml中,需要理解dependencyManagement与dependencies区别:

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本dependencies即使在子模块中不写该依赖项,那么子模块仍然会从父项目中继承该依赖项(全部继承)创建子项目

创建具体业务子项目,比如现在我们创建一个最常见的用户微服务项目,为了更清晰的划分具体微服务功能结构,
将业务子项目划分三个更细化的子项目,它们是:

提供主体业务实现的微服务mingx-user提供pojo类的微服务mingx-user-pojo提供微服务之间调用的微服务mingx-user-client

具体操作步骤:

STS创建mingx-user,file->new->other…,选择Maven下的Maven Module,如下图:

 创建完成之后,修改pom.xml文件,如下:

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.mingx</groupId> <artifactId>mingx-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>mingx-user</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies></project>

注:此处引入的spring-cloud-starter-config理论上应该不用,但是以目前简单形式启动子项目会出现无法读取到配置文件的问题,报No active profile set, falling back to default profiles: default,导致即使在配置文件中设置了端口号,启动仍然是8080,后续结合nacos后,不需要次依赖了。

        3. 在src/main/java目录下创建com.mingx包,创建UserApplication.java主函数文件,其中代码如下:

package com.mingx;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); }}

        4.在src/main/java目录下创建com.mingx.user.controller包,存放控制类相关文件,创建UserController.java类,用于测试,里面代码如下:

package com.mingx.user.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/user")public class UserController { @GetMapping("/helloUser") public String helloUser() { return "Hello user" ; }}

        5.在main/src/resourse目录下,创建项目配置文件bootstrap.yml,内容如下:

spring: application: name: mingx-user # 项目名称server: port: 7001 # 启动端口

        6.现在可以启动mingx-user项目了,找到UserApplication.java,空白处右击run as -->Springboot app

        7.正常启动成功后,在浏览器中访问:http://127.0.0.1:7001/user/helloUser,如果可以正常响应如下内容,说明已经成功了。

注:

在创建了多个子项目后,如果不做什么设置在STS中显示是这样子的:

对于有强迫症的小伙伴来说,既然图中mingx-user是mingx-demo的子项目,为什么它不在其下面,而是与父项目平行的,为了解决这个尴尬,可以在STS中做如下设置:

window--》Show View --》Project Explorer,显示其窗口在Project Explorer窗口中,点击倒三角按钮,Projects Presentation--》选择Hierarchical,此时就会以父项目包含子项目的形式显示:

结束语

关于父子项目的构建,基本上已经完成了,如果你对SpringBoot很熟,也使用过Maven的话,本章基本上没有难度,尚未涉及到SpringClould微服务相关内容,按照以上步骤,分分钟搞定。

另外其他两个POJO微服务,以及内部调用微服务,在后续业务深入后再创建,过程与创建mingx-user微服务是一致的,略有差别。

下一篇介绍Nacos,一个牛叉的注册中心和配置中心。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。