当前位置:实例文章 » JAVA Web实例» [文章]【SpringCloud Alibaba】(二)微服务环境搭建

【SpringCloud Alibaba】(二)微服务环境搭建

发布人:shili8 发布时间:2025-02-15 20:55 阅读次数:0

**SpringCloud Alibaba 微服务环境搭建**

在上一篇文章中,我们已经了解了 SpringCloud Alibaba 的基本概念和组件。现在,我们将一步步地搭建一个完整的微服务环境。

###1.项目背景我们将创建一个简单的电商系统,包含以下几个模块:

* **OrderService**:负责处理订单相关业务逻辑。
* **PaymentService**:负责处理支付相关业务逻辑。
* **UserService**:负责处理用户相关业务逻辑。

###2.项目环境搭建首先,我们需要在本地创建一个 SpringCloud Alibaba项目。我们使用 SpringBoot 来作为我们的微服务框架。

####2.1 创建SpringBoot父工程

xml<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.3.4.RELEASE</version>
 <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
 <!-- SpringCloud Alibaba依赖 -->
 <dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
 <version>2.2.0.RELEASE</version>
 <type>pom</type>
 <scope>import</scope>
 </dependency>

 <!-- SpringCloud依赖 -->
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-dependencies</artifactId>
 <version>Hoxton.SR5</version>
 <type>pom</type>
 <scope>import</scope>
 </dependency>

 <!-- SpringBoot依赖 -->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

 <!-- MyBatis Plus依赖 -->
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.4.0</version>
 </dependency>

 <!-- MySQL依赖 -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
 </dependency>

 <!-- Druid依赖 -->
 <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>druid-spring-boot-starter</artifactId>
 <version>1.1.10</version>
 </dependency>

 <!-- Log4j2依赖 -->
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-web</artifactId>
 <version>2.14.0</version>
 </dependency>

 <!-- SpringCloud Alibaba Nacos依赖 -->
 <dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 <version>2.2.0.RELEASE</version>
 </dependency>

 <!-- SpringCloud Alibaba Sentinel依赖 -->
 <dependency>
 <groupId>com.alibaba.csp</groupId>
 <artifactId>sentinel-spring-boot-starter</artifactId>
 <version>1.8.0</version>
 </dependency>

 <!-- SpringCloud Alibaba Dubbo依赖 -->
 <dependency>
 <groupId>com.alibaba.dubbo</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>2.6.3</version>
 </dependency>
</dependencies>


####2.2 创建OrderService
java@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class OrderServiceApplication {

 @Value("${spring.application.name}")
 private String applicationName;

 public static void main(String[] args) {
 SpringApplication.run(OrderServiceApplication.class, args);
 }

 @GetMapping("/order")
 public String getOrder() {
 return "Order Service";
 }
}


####2.3 创建PaymentService
java@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class PaymentServiceApplication {

 @Value("${spring.application.name}")
 private String applicationName;

 public static void main(String[] args) {
 SpringApplication.run(PaymentServiceApplication.class, args);
 }

 @GetMapping("/payment")
 public String getPayment() {
 return "Payment Service";
 }
}


####2.4 创建UserService
java@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class UserServiceApplication {

 @Value("${spring.application.name}")
 private String applicationName;

 public static void main(String[] args) {
 SpringApplication.run(UserServiceApplication.class, args);
 }

 @GetMapping("/user")
 public String getUser() {
 return "User Service";
 }
}


###3. Nacos配置我们需要在Nacos中注册我们的微服务。

####3.1 创建Nacos配置文件
propertiesspring:
 application:
 name: order-serviceserver:
 port:8080eureka:
 client:
 service-url:
 defaultZone:  />nacos:
 server-addr: localhost:8848


####3.2 创建Nacos配置类
java@Configuration@RefreshScopepublic class NacosConfig {

 @Bean public ConfigPropertiesBeanPostProcessor configPropertiesBeanPostProcessor() {
 return new ConfigPropertiesBeanPostProcessor();
 }

 @Bean public ConfigurableApplicationContext configurableApplicationContext() {
 return new SpringApplicationBuilder().applicationContextClass(DefaultSpringApplication.class).build().getSpringApplication();
 }
}


###4. Sentinel配置我们需要在Sentinel中注册我们的微服务。

####4.1 创建Sentinel配置文件
propertiesspring:
 application:
 name: order-serviceserver:
 port:8080eureka:
 client:
 service-url:
 defaultZone:  />nacos:
 server-addr: localhost:8848sentinel:
 enabled: true


####4.2 创建Sentinel配置类
java@Configurationpublic class SentinelConfig {

 @Bean public DiscoveryClientImpl discoveryClient() {
 return new DiscoveryClientImpl();
 }

 @Bean public ResourceLoader resourceLoader() {
 return new DefaultResourceLoader();
 }
}


###5. Dubbo配置我们需要在Dubbo中注册我们的微服务。

####5.1 创建Dubbo配置文件
propertiesspring:
 application:
 name: order-serviceserver:
 port:8080eureka:
 client:
 service-url:
 defaultZone:  />nacos:
 server-addr: localhost:8848dubbo:
 application:
 name: order-service registry:
 address: zookeeper://127.0.0.1:2181


####5.2 创建Dubbo配置类
java@Configurationpublic class DubboConfig {

 @Bean public ZooKeeperRegistry zooKeeperRegistry() {
 return new ZooKeeperRegistry();
 }

 @Bean public ApplicationModel applicationModel() {
 return new ApplicationModel();
 }
}


###6. 总结在本文中,我们一步步地搭建了一个完整的微服务环境,包括SpringCloud Alibaba、Nacos、Sentinel和Dubbo。我们通过配置文件和配置类来注册我们的微服务,并且使用DiscoveryClientImpl和ResourceLoader等组件来实现服务发现和资源加载。

当然,这只是一个简单的例子,我们可以根据实际需求进行扩展和优化。

其他信息

其他资源

Top