当前位置:   article > 正文

SpringCloudAlibaba微服务架构搭建(一)框架搭建(粘贴即运行)_springcloudalibaba 搭建微服务架构

springcloudalibaba 搭建微服务架构

什么是 Spring-Cloud?

其实Spring Cloud是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。
他的特点:约定优于配置。组件丰富,功能齐全。SpringCloud为微服务。列如Euerk架构提供了非常完整的支持。列如配置管理、服务发现、断路器、微服务网关等。

SpringCloud

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <groupId>com.huangmount</groupId>
  6. <artifactId>HuangMount</artifactId>
  7. <version>3.6.3</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <modules>
  11. <module>huangmount-api-system</module>
  12. </modules>
  13. <artifactId>huangmount-api</artifactId>
  14. <packaging>pom</packaging>
  15. <description>
  16. huangmount-api系统接口
  17. </description>
  18. </project>

能干些什么?

  1. 服务发现与注册:Spring Cloud阿里巴巴集成了Nacos,一个强大的服务发现和注册中心。通过Nacos,微服务应用可以实现动态的服务注册和发现,以便服务之间可以相互调用。

  2. 配置管理:Nacos还提供了配置管理功能,允许开发者集中管理微服务的配置信息,并实现动态配置刷新。

  3. 服务容错保护:通过集成Sentinel,Spring Cloud阿里巴巴可以对微服务进行流量控制、熔断降级和系统负载保护,防止因服务故障或异常导致整个系统崩溃。

  4. 消息驱动:Spring Cloud阿里巴巴支持集成RocketMQ,一个消息队列,使得微服务之间可以进行异步通信和事件驱动的交互。

  5. 多个事务:通过Seata,Spring Cloud阿里巴巴可以实现多个事务的管理和协调,保证多个微服务之间的数据操作的一致性和可靠性。

  6. RPC 通信:虽然 Dubbo 不是 Spring Cloud Obama 的蜡烛组件,但它是一个高性能的 RPC 框架,也可以方便地与 Spring Cloud Ali 集成,提供快速、高效的微服务间通信。

SpringCloudAlibaba之核心组件详解

  1. Nacos(Naming and Configuration Service):

    • 功能:Nacos是一个动态服务发现和配置管理平台。它提供服务注册与发现、配置管理、动态路由等功能,可以帮助微服务应用实现弹性和可伸缩性。
    • 服务注册与发现:微服务应用可以将自己的服务注册到Nacos,并通过Nacos发现其他服务的位置。
    • 配置管理:Nacos可以集中管理微服务应用的配置信息,包括动态刷新配置,无需重启应用即可更新配置。
    • 动态路由:Nacos支持动态路由功能,可以根据配置调整服务之间的调用路径,实现流量控制和负载均衡。
  2. Sentinel:

    • 功能:Sentinel是一个流量控制和系统保护组件,用于保护微服务免受流量激增和故障的影响。
    • 流量控制:Sentinel允许开发者设置流量控制规则,限制每个微服务的请求量,防止服务因请求过载而崩溃。
    • 熔断降级:Sentinel可以在服务出现异常或故障时自动熔断降级,防止故障传递和整个系统崩溃。
    • 系统负载保护:Sentinel可以根据系统负载情况进行自适应限流,防止系统超负荷运行。
  3. RocketMQ:

    • 功能:RocketMQ是一个分布式消息队列,用于实现微服务之间的异步通信和解耦。
    • 消息发布与订阅:微服务应用可以将消息发布到RocketMQ,其他微服务可以通过订阅消息来接收和处理这些消息。
    • 可靠性投递:RocketMQ保证消息的可靠性投递,确保消息不会因为网络故障或其他问题丢失。
  4. Seata:

    • 功能:Seata是一个开源的分布式事务解决方案,用于管理和协调分布式事务。
    • 分布式事务:Seata支持分布式事务的管理和处理,确保多个微服务之间的数据操作的一致性。
    • 事务协调:Seata提供全局事务协调服务,协调并管理跨多个微服务的分布式事务。
  5. Dubbo(可选,不是Spring Cloud Alibaba的独有组件):

    • 功能:Dubbo是一个高性能的RPC(远程过程调用)框架,用于微服务之间的快速通信。
    • 远程调用:Dubbo允许微服务应用通过RPC方式直接调用其他微服务的方法,实现快速、高效的通信。

这些组件为构建微服务应用提供了一系列的解决方案,涵盖了服务发现、配置管理、容错保护、消息驱动、分布式事务等关键功能。使用这些组件,开发者可以更方便地构建复杂的微服务应用,并具备了更好的弹性和可靠性。

Alibaba框架代码上手干活(纯源码,粘贴即运行)

1、创建一个空项目 HuangMount

2、粘贴到父项目Pom.xml中

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.huangmount</groupId>
  7. <artifactId>HuangMount</artifactId>
  8. <version>3.6.3</version>
  9. <name>huangmount</name>
  10. <description>alibaba微服务系统</description>
  11. <properties>
  12. <huangmount.version>3.6.3</huangmount.version>
  13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  15. <java.version>1.8</java.version>
  16. <spring-boot.version>2.7.13</spring-boot.version>
  17. <spring-cloud.version>2021.0.8</spring-cloud.version>
  18. <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
  19. <spring-boot-admin.version>2.7.10</spring-boot-admin.version>
  20. <swagger.fox.version>3.0.0</swagger.fox.version>
  21. <swagger.core.version>1.6.2</swagger.core.version>
  22. <tobato.version>1.27.2</tobato.version>
  23. <kaptcha.version>2.3.3</kaptcha.version>
  24. <pagehelper.boot.version>1.4.7</pagehelper.boot.version>
  25. <druid.version>1.2.16</druid.version>
  26. <dynamic-ds.version>3.5.2</dynamic-ds.version>
  27. <commons.io.version>2.11.0</commons.io.version>
  28. <velocity.version>2.3</velocity.version>
  29. <fastjson.version>2.0.34</fastjson.version>
  30. <jjwt.version>0.9.1</jjwt.version>
  31. <minio.version>8.2.2</minio.version>
  32. <poi.version>4.1.2</poi.version>
  33. <transmittable-thread-local.version>2.14.3</transmittable-thread-local.version>
  34. </properties>
  35. <!-- 依赖声明 -->
  36. <dependencyManagement>
  37. <dependencies>
  38. <!-- SpringCloud 微服务 -->
  39. <dependency>
  40. <groupId>org.springframework.cloud</groupId>
  41. <artifactId>spring-cloud-dependencies</artifactId>
  42. <version>${spring-cloud.version}</version>
  43. <type>pom</type>
  44. <scope>import</scope>
  45. </dependency>
  46. <!-- SpringCloud Alibaba 微服务 -->
  47. <dependency>
  48. <groupId>com.alibaba.cloud</groupId>
  49. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  50. <version>${spring-cloud-alibaba.version}</version>
  51. <type>pom</type>
  52. <scope>import</scope>
  53. </dependency>
  54. <!-- SpringBoot 依赖配置 -->
  55. <dependency>
  56. <groupId>org.springframework.boot</groupId>
  57. <artifactId>spring-boot-dependencies</artifactId>
  58. <version>${spring-boot.version}</version>
  59. <type>pom</type>
  60. <scope>import</scope>
  61. </dependency>
  62. <!-- FastDFS 分布式文件系统 -->
  63. <dependency>
  64. <groupId>com.github.tobato</groupId>
  65. <artifactId>fastdfs-client</artifactId>
  66. <version>${tobato.version}</version>
  67. </dependency>
  68. <!-- Swagger 依赖配置 -->
  69. <dependency>
  70. <groupId>io.swagger</groupId>
  71. <artifactId>swagger-models</artifactId>
  72. <version>${swagger.core.version}</version>
  73. </dependency>
  74. <dependency>
  75. <groupId>io.swagger</groupId>
  76. <artifactId>swagger-annotations</artifactId>
  77. <version>${swagger.core.version}</version>
  78. </dependency>
  79. <!-- 验证码 -->
  80. <dependency>
  81. <groupId>pro.fessional</groupId>
  82. <artifactId>kaptcha</artifactId>
  83. <version>${kaptcha.version}</version>
  84. </dependency>
  85. <!-- pagehelper 分页插件 -->
  86. <dependency>
  87. <groupId>com.github.pagehelper</groupId>
  88. <artifactId>pagehelper-spring-boot-starter</artifactId>
  89. <version>${pagehelper.boot.version}</version>
  90. </dependency>
  91. <!-- io常用工具类 -->
  92. <dependency>
  93. <groupId>commons-io</groupId>
  94. <artifactId>commons-io</artifactId>
  95. <version>${commons.io.version}</version>
  96. </dependency>
  97. <!-- excel工具 -->
  98. <dependency>
  99. <groupId>org.apache.poi</groupId>
  100. <artifactId>poi-ooxml</artifactId>
  101. <version>${poi.version}</version>
  102. </dependency>
  103. <!-- 代码生成使用模板 -->
  104. <dependency>
  105. <groupId>org.apache.velocity</groupId>
  106. <artifactId>velocity-engine-core</artifactId>
  107. <version>${velocity.version}</version>
  108. </dependency>
  109. <!-- JSON 解析器和生成器 -->
  110. <dependency>
  111. <groupId>com.alibaba.fastjson2</groupId>
  112. <artifactId>fastjson2</artifactId>
  113. <version>${fastjson.version}</version>
  114. </dependency>
  115. <!-- JWT -->
  116. <dependency>
  117. <groupId>io.jsonwebtoken</groupId>
  118. <artifactId>jjwt</artifactId>
  119. <version>${jjwt.version}</version>
  120. </dependency>
  121. <!-- 线程传递值 -->
  122. <dependency>
  123. <groupId>com.alibaba</groupId>
  124. <artifactId>transmittable-thread-local</artifactId>
  125. <version>${transmittable-thread-local.version}</version>
  126. </dependency>
  127. </dependencies>
  128. </dependencyManagement>
  129. <modules>
  130. <module>huangmount-common</module>
  131. </modules>
  132. <packaging>pom</packaging>
  133. <dependencies>
  134. <!-- bootstrap 启动器 -->
  135. <dependency>
  136. <groupId>org.springframework.cloud</groupId>
  137. <artifactId>spring-cloud-starter-bootstrap</artifactId>
  138. </dependency>
  139. </dependencies>
  140. <build>
  141. <pluginManagement>
  142. <plugins>
  143. <plugin>
  144. <groupId>org.springframework.boot</groupId>
  145. <artifactId>spring-boot-maven-plugin</artifactId>
  146. <version>${spring-boot.version}</version>
  147. <executions>
  148. <execution>
  149. <goals>
  150. <goal>repackage</goal>
  151. </goals>
  152. </execution>
  153. </executions>
  154. </plugin>
  155. </plugins>
  156. </pluginManagement>
  157. </build>
  158. <repositories>
  159. <repository>
  160. <id>public</id>
  161. <name>aliyun nexus</name>
  162. <url>https://maven.aliyun.com/repository/public</url>
  163. <releases>
  164. <enabled>true</enabled>
  165. </releases>
  166. </repository>
  167. </repositories>
  168. <pluginRepositories>
  169. <pluginRepository>
  170. <id>public</id>
  171. <name>aliyun nexus</name>
  172. <url>https://maven.aliyun.com/repository/public</url>
  173. <releases>
  174. <enabled>true</enabled>
  175. </releases>
  176. <snapshots>
  177. <enabled>false</enabled>
  178. </snapshots>
  179. </pluginRepository>
  180. </pluginRepositories>
  181. </project>

3、创建一个业务项目 huangmount-api 业务系统

        3.1 继续创建huangmount-modules

        3.2 粘贴huangmount-modules, 如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <groupId>com.huangmount</groupId>
  6. <artifactId>HuangMount</artifactId>
  7. <version>3.6.3</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <modules>
  11. <module>huangmount-modules-system</module>
  12. </modules>
  13. <artifactId>huangmount-modules</artifactId>
  14. <packaging>pom</packaging>
  15. <description>
  16. huangmount-modules业务模块
  17. </description>
  18. </project>

        3.3 创建huangmount-modules-system 模块,该模块为业务系统模块,用于提供接口

        3.4 粘贴huangmount-modules-system 模块pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <groupId>com.huangmount</groupId>
  7. <artifactId>huangmount-modules</artifactId>
  8. <version>3.6.3</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>huangmount-modules-system</artifactId>
  12. <description>
  13. huangmount-modules-system系统模块
  14. </description>
  15. <dependencies>
  16. <!-- SpringCloud Alibaba Nacos -->
  17. <dependency>
  18. <groupId>com.alibaba.cloud</groupId>
  19. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  20. </dependency>
  21. <!-- SpringCloud Alibaba Nacos Config -->
  22. <dependency>
  23. <groupId>com.alibaba.cloud</groupId>
  24. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  25. </dependency>
  26. <!-- SpringCloud Alibaba Sentinel -->
  27. <dependency>
  28. <groupId>com.alibaba.cloud</groupId>
  29. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  30. </dependency>
  31. <!-- SpringBoot Actuator -->
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-actuator</artifactId>
  35. </dependency>
  36. <!-- Swagger UI -->
  37. <dependency>
  38. <groupId>io.springfox</groupId>
  39. <artifactId>springfox-swagger-ui</artifactId>
  40. <version>${swagger.fox.version}</version>
  41. </dependency>
  42. <!-- Mysql Connector -->
  43. <dependency>
  44. <groupId>com.mysql</groupId>
  45. <artifactId>mysql-connector-j</artifactId>
  46. </dependency>
  47. </dependencies>
  48. <build>
  49. <finalName>${project.artifactId}</finalName>
  50. <plugins>
  51. <plugin>
  52. <groupId>org.springframework.boot</groupId>
  53. <artifactId>spring-boot-maven-plugin</artifactId>
  54. <executions>
  55. <execution>
  56. <goals>
  57. <goal>repackage</goal>
  58. </goals>
  59. </execution>
  60. </executions>
  61. </plugin>
  62. </plugins>
  63. </build>
  64. </project>

        3.5 项目结构图如下

启动HuangMountSystemApplication启动类即可成功,如有问题,欢迎留言!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号