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