【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等组件来实现服务发现和资源加载。
当然,这只是一个简单的例子,我们可以根据实际需求进行扩展和优化。

