一、分布式开发

将之前的项目导入到 spring cloud 的项目中

1. 目标

会员登录注册
发起众筹项目
展示众筹项目
支持众筹项目

2. 结构图

未命名图片.png

3. 需要创建的工程 com.yixuexi

  • 父工程,聚合工程:atcrowdfunding07_member_parent (唯一的pom工程)
  • 注册中心:atcrowdfunding08_member_eureka
  • 实体类模块:atcowdfunding09_member_entity
  • MySQL数据服务:atcrowdfunding10_member_mysql_provider
  • Redis数据服务:atcrowdfunding11_member_redis_provider
  • 会员中心:atcrowdfunding12_member_authentication_consumer
  • 项目维护:atcrowdfunding13_member_project_consumer
  • 订单维护:atcrowdfunding14_member_order_consumer
  • 支付功能:atcrowdfunding15_member_pay_consumer
  • 网关:atcrowdfunding16-member-zuul
  • API模块:atcrowdfunding17-member-api

    4. 父工程管理依赖版本 Pom

    ```xml com.yixuexi atcrowdfunding07_member_parent 1.0-SNAPSHOT

    pom

    1. <!-- 导入 SpringCloud 需要使用的依赖信息 -->
    2. <dependency>
    3. <groupId>org.springframework.cloud</groupId>
    4. <artifactId>spring-cloud-dependencies</artifactId>
    5. <version>Greenwich.SR2</version>
    6. <type>pom</type>
    7. <!-- import 依赖范围表示将 spring-cloud-dependencies 包中的依赖信息导入 -->
    8. <scope>import</scope>
    9. </dependency>
    10. <!-- 导入 SpringBoot 需要使用的依赖信息 -->
    11. <dependency>
    12. <groupId>org.springframework.boot</groupId>
    13. <artifactId>spring-boot-dependencies</artifactId>
    14. <version>2.1.6.RELEASE</version>
    15. <type>pom</type>
    16. <scope>import</scope>
    17. </dependency>
    18. <dependency>
    19. <groupId>org.mybatis.spring.boot</groupId>
    20. <artifactId>mybatis-spring-boot-starter</artifactId>
    21. <version>2.1.0</version>
    22. </dependency>
    23. <dependency>
    24. <groupId>com.alibaba</groupId>
    25. <artifactId>druid</artifactId>
    26. <version>1.0.5</version>
    27. </dependency>

    ../atcrowdfunding08_member_eureka ../atcowdfunding09_member_entity ../atcrowdfunding10_member_mysql_provider ../atcrowdfunding11_member_redis_provider ../atcrowdfunding12_member_authentication_consumer ../atcrowdfunding13_member_project_consumer ../atcrowdfunding14_member_order_consumer ../atcrowdfunding15_member_pay_consumer
<a name="2ggUa"></a>
## **5. 搭建环境约定**
包名约定:<br />新建的包都是 com.yixuexi.crowd 的子包<br />主启动类类名:<br />CrowdMainClass<br />端口号:

- atcrowdfunding08-member-eureka 1000 
- atcrowdfunding10-member-mysql-provider 2000 
- atcrowdfunding11-member-redis-provider 3000 
- atcrowdfunding12-member-authentication-consumer 4000 
- atcrowdfunding13-member-project-consumer 5000 
- atcrowdfunding14-member-order-consumer 7000 
- atcrowdfunding15-member-pay-consumer 8000 
- atcrowdfunding16-member-zuul 80

---

<a name="kxoZ6"></a>
# 二、搭建Eureka
<a name="ueMf1"></a>
## 1. 加入依赖
```xml
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2. 添加主启动类

添加@EnableEurekaServer 注解

/**
 * @date: 2021/3/12   15:18
 * @author: 易学习
 */
@EnableEurekaServer
@SpringBootApplication
public class CrowdMainClass {
    public static void main(String[] args) {
        SpringApplication.run(CrowdMainClass.class);
    }
}

3. 配置yaml

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}/${server.port}/eureka

4. 如果Eureka启动报错,添加下面依赖

因为JDK版本问题,。。。

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>javax.activation</groupId>
  <artifactId>activation</artifactId>
  <version>1.1.1</version>
</dependency>