springcloud微服务-项目搭建

小灰灰 2022-05-08 13:14 427阅读 0赞

前言:

  1. 乐优商城这个视频还可以,于是拿来练练手,我对着视频搭环境一直在service服务模块卡住了,注册中心和网关可以启动,服务模块却一直启动不了,报各种奇怪的错,网上也没有什么好的解决办法,于是我就自己改动了下,不完全按视频的,于是搭建成功了,值得注意的是springcloud的版本不同,配置的也不太一样的。

项目结构:

70

1.创建父工程:

父工程的pom.xml:

(ps:此处我的springcloud的版本是Finchley.SR1,并不是传智视频上的Finchley.RC1,我刚开始用的是RC1,结果发现在service模块的启动一直会报错,不知道有没有人遇到跟我一样的情况。)

  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. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.leyou.parent</groupId>
  7. <artifactId>leyou</artifactId>
  8. <packaging>pom</packaging>
  9. <version>1.0.0-SNAPSHOT</version>
  10. <modules>
  11. <module>ly-registry</module>
  12. <module>ly-api-gateway</module>
  13. <module>ly-item</module>
  14. </modules>
  15. <parent>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-parent</artifactId>
  18. <version>2.0.2.RELEASE</version>
  19. <relativePath/> <!-- lookup parent from repository -->
  20. </parent>
  21. <properties>
  22. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  23. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  24. <java.version>1.8</java.version>
  25. <spring-cloud.version>Finchley.SR1</spring-cloud.version>
  26. <mybatis.starter.version>1.3.2</mybatis.starter.version>
  27. <mapper.starter.version>2.0.2</mapper.starter.version>
  28. <druid.starter.version>1.1.9</druid.starter.version>
  29. <mysql.version>5.1.32</mysql.version>
  30. <pageHelper.starter.version>1.2.3</pageHelper.starter.version>
  31. <leyou.latest.version>1.0.0-SNAPSHOT</leyou.latest.version>
  32. <fastDFS.client.version>1.26.1-RELEASE</fastDFS.client.version>
  33. </properties>
  34. <dependencyManagement>
  35. <dependencies>
  36. <dependency>
  37. <groupId>org.springframework.cloud</groupId>
  38. <artifactId>spring-cloud-dependencies</artifactId>
  39. <version>${spring-cloud.version}</version>
  40. <type>pom</type>
  41. <scope>import</scope>
  42. </dependency>
  43. </dependencies>
  44. </dependencyManagement>
  45. <dependencies>
  46. <dependency>
  47. <groupId>org.springframework.cloud</groupId>
  48. <artifactId>spring-cloud-starter-config</artifactId>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.cloud</groupId>
  52. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  53. </dependency>
  54. <!-- mybatis启动器 -->
  55. <dependency>
  56. <groupId>org.mybatis.spring.boot</groupId>
  57. <artifactId>mybatis-spring-boot-starter</artifactId>
  58. <version>${mybatis.starter.version}</version>
  59. </dependency>
  60. <!-- 通用Mapper启动器 -->
  61. <dependency>
  62. <groupId>tk.mybatis</groupId>
  63. <artifactId>mapper-spring-boot-starter</artifactId>
  64. <version>${mapper.starter.version}</version>
  65. </dependency>
  66. <!-- 分页助手启动器 -->
  67. <dependency>
  68. <groupId>com.github.pagehelper</groupId>
  69. <artifactId>pagehelper-spring-boot-starter</artifactId>
  70. <version>${pageHelper.starter.version}</version>
  71. </dependency>
  72. <!-- mysql驱动 -->
  73. <dependency>
  74. <groupId>mysql</groupId>
  75. <artifactId>mysql-connector-java</artifactId>
  76. <version>${mysql.version}</version>
  77. </dependency>
  78. <!--FastDFS客户端-->
  79. <dependency>
  80. <groupId>com.github.tobato</groupId>
  81. <artifactId>fastdfs-client</artifactId>
  82. <version>${fastDFS.client.version}</version>
  83. </dependency>
  84. </dependencies>
  85. <build>
  86. <plugins>
  87. <plugin>
  88. <groupId>org.springframework.boot</groupId>
  89. <artifactId>spring-boot-maven-plugin</artifactId>
  90. </plugin>
  91. </plugins>
  92. </build>
  93. <repositories>
  94. <repository>
  95. <id>spring-milestones</id>
  96. <name>Spring Milestones</name>
  97. <url>https://repo.spring.io/milestone</url>
  98. <snapshots>
  99. <enabled>false</enabled>
  100. </snapshots>
  101. </repository>
  102. </repositories>
  103. </project>

2.创建 Eureka注册中心

模块结构:

70 1

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. <parent>
  6. <artifactId>leyou</artifactId>
  7. <groupId>com.leyou.parent</groupId>
  8. <version>1.0.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <groupId>com.leyou.common</groupId>
  12. <artifactId>ly-registry</artifactId>
  13. <version>1.0.0-SNAPSHOT</version>
  14. <dependencies>
  15. <dependency>
  16. <groupId>org.springframework.cloud</groupId>
  17. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  18. </dependency>
  19. </dependencies>
  20. </project>

创建启动类:LyRegistry

  1. package com.leyou;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. /**
  6. * @author: Lucifer
  7. * @create: 2018-10-12 01:14
  8. * @description:
  9. **/
  10. @SpringBootApplication
  11. @EnableEurekaServer
  12. public class LyRegistry {
  13. public static void main(String[] args) {
  14. SpringApplication.run(LyRegistry.class, args);
  15. }
  16. }

application.yml:

ps:

这里的MySQL连接信息的url建议后面加上:useUnicode=true&characterEncoding=utf8,完整的:jdbc:mysql://localhost:3306/heima?useUnicode=true&characterEncoding=utf8,如果不加的话,后面你会遇到坑的,在数据库执行增加的时候。

  1. server:
  2. port: 10086
  3. spring:
  4. application:
  5. name: ly-registry
  6. datasource:
  7. url: jdbc:mysql://localhost:3306/heima?useUnicode=true&characterEncoding=utf8
  8. username: root
  9. password: 123456
  10. hikari:
  11. maximum-pool-size: 30
  12. minimum-idle: 10
  13. eureka:
  14. client:
  15. fetchRegistry: false
  16. registerWithEureka: false
  17. serviceUrl:
  18. defaultZone: http://127.0.0.1:${server.port}/eureka
  19. server:
  20. enableSelfPreservation: false # 关闭自我保护
  21. evictionIntervalTimerInMs: 5000 # 每隔5秒进行一次服务列表清理

run启动类,如图:成功启动Eureka注册中心

70 2

3.创建Zuul网关

70 3

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. <parent>
  6. <artifactId>leyou</artifactId>
  7. <groupId>com.leyou.parent</groupId>
  8. <version>1.0.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <groupId>com.leyou.common</groupId>
  12. <artifactId>ly-api-gateway</artifactId>
  13. <version>1.0.0-SNAPSHOT</version>
  14. <dependencies>
  15. <dependency>
  16. <groupId>org.springframework.cloud</groupId>
  17. <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.springframework.cloud</groupId>
  21. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  22. </dependency>
  23. <!--是springboot提供的微服务检测接口,默认对外提供几个接口:/info-->
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-actuator</artifactId>
  27. </dependency>
  28. </dependencies>
  29. </project>

启动类:LyApiGateway

  1. package com.leyou;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
  6. /**
  7. * @author: Lucifer
  8. * @create: 2018-10-12 01:32
  9. * @description:
  10. **/
  11. @SpringBootApplication
  12. @EnableDiscoveryClient
  13. @EnableZuulProxy
  14. public class LyApiGateway {
  15. public static void main(String[] args) {
  16. SpringApplication.run(LyApiGateway.class, args);
  17. }
  18. }

网关的配置文件:application.yml:

  1. server:
  2. port: 10010
  3. spring:
  4. application:
  5. name: api-gateway
  6. datasource:
  7. url: jdbc:mysql://localhost:3306/heima
  8. username: root
  9. password: 123456
  10. hikari:
  11. maximum-pool-size: 30
  12. minimum-idle: 10
  13. eureka:
  14. client:
  15. serviceUrl:
  16. defaultZone: http://127.0.0.1:10086/eureka
  17. registryFetchIntervalSeconds: 5
  18. instance:
  19. preferIpAddress: true
  20. ipAddress: 127.0.0.1
  21. instanceId: ${spring.application.name}:${server.port}
  22. zuul:
  23. prefix: /api # 添加路由前缀
  24. retryable: true
  25. ribbon:
  26. ConnectTimeout: 250 # 连接超时时间(ms)
  27. ReadTimeout: 2000 # 通信超时时间(ms)
  28. OkToRetryOnAllOperations: true # 是否对所有操作重试
  29. MaxAutoRetriesNextServer: 1 # 同一服务不同实例的重试次数
  30. MaxAutoRetries: 1 # 同一实例的重试次数
  31. hystrix:
  32. command:
  33. default:
  34. execution:
  35. isolation:
  36. thread:
  37. timeoutInMillisecond: 10000 # 熔断超时时长:10000ms

run启动类:如图:成功运行

70 4

4.创建商品微服务

在ly-item中创建两个子工程:

  • ly-item-interface:主要是对外暴露的接口及相关实体类
  • ly-item-service:所有业务逻辑及内部使用接口

70 5

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. <parent>
  6. <artifactId>ly-item</artifactId>
  7. <groupId>com.leyou.service</groupId>
  8. <version>1.0.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <groupId>com.leyou.service</groupId>
  12. <artifactId>ly-item-service</artifactId>
  13. <version>1.0.0-SNAPSHOT</version>
  14. <dependencies>
  15. <!--Eureka客户端-->
  16. <dependency>
  17. <groupId>org.springframework.cloud</groupId>
  18. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  19. </dependency>
  20. <!--web启动器-->
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <!-- mybatis启动器 -->
  26. <dependency>
  27. <groupId>org.mybatis.spring.boot</groupId>
  28. <artifactId>mybatis-spring-boot-starter</artifactId>
  29. <version>${mybatis.starter.version}</version>
  30. </dependency>
  31. <!-- 通用Mapper启动器 -->
  32. <dependency>
  33. <groupId>tk.mybatis</groupId>
  34. <artifactId>mapper-spring-boot-starter</artifactId>
  35. <version>${mapper.starter.version}</version>
  36. </dependency>
  37. <!-- 分页助手启动器 -->
  38. <dependency>
  39. <groupId>com.github.pagehelper</groupId>
  40. <artifactId>pagehelper-spring-boot-starter</artifactId>
  41. <version>${pageHelper.starter.version}</version>
  42. </dependency>
  43. <!-- mysql驱动 -->
  44. <dependency>
  45. <groupId>mysql</groupId>
  46. <artifactId>mysql-connector-java</artifactId>
  47. <version>${mysql.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>com.leyou.service</groupId>
  51. <artifactId>ly-item-interface</artifactId>
  52. <version>${leyou.latest.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-starter-actuator</artifactId>
  57. </dependency>
  58. </dependencies>
  59. </project>

启动类:LyItemService

  1. package com.leyou;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. /**
  6. * @author: Lucifer
  7. * @create: 2018-10-12 01:38
  8. * @description:
  9. **/
  10. @SpringBootApplication
  11. @EnableDiscoveryClient
  12. public class LyItemService {
  13. public static void main(String[] args) {
  14. SpringApplication.run(LyItemService.class, args);
  15. }
  16. }

配置文件:application.yml:

  1. server:
  2. port: 8081
  3. spring:
  4. application:
  5. name: item-service
  6. datasource:
  7. url: jdbc:mysql://localhost:3306/heima
  8. username: root
  9. password: 123456
  10. hikari:
  11. maximum-pool-size: 30
  12. minimum-idle: 10
  13. eureka:
  14. client:
  15. serviceUrl:
  16. defaultZone: http://127.0.0.1:10086/eureka
  17. instance:
  18. leaseRenewalIntervalInSeconds: 5 # 每隔5秒发送一次心跳
  19. leaseExpirationDurationInSeconds: 10 # 10秒不发送就过期
  20. preferIpAddress: true
  21. ipAddress: 127.0.0.1
  22. instanceId: ${spring.application.name}:${server.port}

run启动类:如图,成功运行

70 6

然后访问浏览器http://127.0.0.1:10086/,如图:

70 7

服务成功注册!!!!

发表评论

表情:
评论列表 (有 0 条评论,427人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springcloud服务-项目

    前言:      乐优商城这个视频还可以,于是拿来练练手,我对着视频搭环境一直在service服务模块卡住了,注册中心和网关可以启动,服务模块却一直启动不了,报各种奇怪的错,

    相关 SpringCloud服务框架

    一、微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群