paascloud项目系列教程(一)


最近开始微服务的正式学习,网上找了一圈决定用开源项目passcloud作为学习参考,万分感谢~

这个系列教程的目的是完全梳理paascloud项目架构和功能,并不是从零开始学习微服务,所有内容均建立在阅读者已拥有微服务基础知识储备并具备基本开发能力。下面开始正式学习。

项目介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
功能点:
模拟商城,完整的购物流程、后端运营平台对前端业务的支撑,和对项目的运维,有各项的监控指标和运维指标。
技术点:
核心技术为springcloud+vue两个全家桶实现,采取了取自开源用于开源的目标,所以能用开源绝不用收费框架,整体技术栈只有
阿里云短信服务是收费的,都是目前java前瞻性的框架,可以为中小企业解决微服务架构难题,可以帮助企业快速建站。由于服务
器成本较高,尽量降低开发成本的原则,本项目由10个后端项目和3个前端项目共同组成。真正实现了基于RBAC、jwt和oauth2的
无状态统一权限认证的解决方案,实现了异常和日志的统一管理,实现了MQ落地保证100%到达的解决方案。

true核心框架:springcloud Edgware全家桶
true安全框架:Spring Security Spring Cloud Oauth2
true分布式任务调度:elastic-job
持久层框架:MyBatis、通用Mapper4、Mybatis_PageHelper
true数据库连接池:Alibaba Druid
true日志管理:Logback 前端框架:Vue全家桶以及相关组件
true三方服务: 邮件服务、阿里云短信服务、七牛云文件服务、钉钉机器人服务、高德地图API

目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
├─paascloud-master----------------------------父项目,公共依赖
│ │
│ ├─paascloud-eureka--------------------------微服务注册中心
│ │
│ ├─paascloud-discovery-----------------------微服务配置中心
│ │
│ ├─paascloud-monitor-------------------------微服务监控中心
│ │
│ ├─paascloud-zipkin--------------------------微服务日志采集中心
│ │
│ ├─paascloud-gateway--------------------------微服务网关中心
│ │
│ ├─paascloud-provider
│ │ │
│ │ ├─paascloud-provider-mdc------------------数据服务中心
│ │ │
│ │ ├─paascloud-provider-omc------------------订单服务中心
│ │ │
│ │ ├─paascloud-provider-opc------------------对接服务中心
│ │ │
│ │ ├─paascloud-provider-tpc------------------任务服务中心
│ │ │
│ │ └─paascloud-provider-uac------------------用户服务中心
│ │
│ ├─paascloud-provider-api
│ │ │
│ │ ├─paascloud-provider-mdc-api------------------数据服务中心API
│ │ │
│ │ ├─paascloud-provider-omc-api------------------订单服务中心API
│ │ │
│ │ ├─paascloud-provider-opc-api------------------对接服务中心API
│ │ │
│ │ ├─paascloud-provider-tpc-api------------------任务服务中心API
│ │ │
│ │ ├─paascloud-provider-sdk-api------------------可靠消息服务API
│ │ │
│ │ └─paascloud-provider-uac-api------------------用户服务中心API
│ │
│ ├─paascloud-common
│ │ │
│ │ ├─paascloud-common-base------------------公共POJO基础包
│ │ │
│ │ ├─paascloud-common-config------------------公共配置包
│ │ │
│ │ ├─paascloud-common-core------------------微服务核心依赖包
│ │ │
│ │ ├─paascloud-common-util------------------公共工具包
│ │ │
│ │ ├─paascloud-common-zk------------------zookeeper配置
│ │ │
│ │ ├─paascloud-security-app------------------公共无状态安全认证
│ │ │
│ │ ├─paascloud-security-core------------------安全服务核心包
│ │ │
│ │ └─paascloud-security-feign------------------基于auth2的feign配置
│ │
│ ├─paascloud-generator
│ │ │
│ │ ├─paascloud-generator-mdc------------------数据服务中心Mybatis Generator
│ │ │
│ │ ├─paascloud-generator-omc------------------数据服务中心Mybatis Generator
│ │ │
│ │ ├─paascloud-generator-opc------------------数据服务中心Mybatis Generator
│ │ │
│ │ ├─paascloud-generator-tpc------------------数据服务中心Mybatis Generator
│ │ │
│ │ └─paascloud-generator-uac------------------数据服务中心Mybatis Generator

paascloud-eureka 微服务注册中心

我们先从简单的学起。

pom:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--关键依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!--安全相关,不需要也可以不引用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--日志,需要编写对应的日志配置文件-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>

java:用注释EnableEurekaServer标识该类为服务注册中心

1
2
3
4
5
6
7
8
9
10
11
12
13
@EnableEurekaServer
@SpringBootApplication
public class PaasCloudEurekaApplication {

true/**
* The entry point of application.
*
* @param args the input arguments
*/
truepublic static void main(String[] args) {
truetrueSpringApplication.run(PaasCloudEurekaApplication.class, args);
true}
}

可以看到有两个主要的资源配置文件:bootstrap.yml、application.yml。
他们的主要区别为bootstrap会比application加载更早,所以bootstrap中往往进行一些与启动有关的、更加底层的参数配置(这些配置通常不容易改变)。
当然,你想混用也没问题。

bootstrap.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#这一段配置的作用是为了在多网卡服务器上部署项目时指定地址
spring:
cloud:
inetutils:
ignoredInterfaces: #忽略网卡
- docker0
- veth.*
- VM.*
preferredNetworks: #指定IP地址段
- 192.168

eureka:
server:
enable-self-preservation: false #关闭eureka自我保护机制
instance:
hostname: localhost #设置当前实例的主机名称
client:
registerWithEureka: false #关闭服务注册(不将自身作为服务注册)
fetchRegistry: false #关闭检索服务
serviceUrl: #设置服务注册中心默认地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#指定启动的端口
server:
port: 8761

spring:
profiles:
active: dev #用来区分环境配置,这里好像没什么用了(没有其他配置文件)
application: #指定应用名称
name: @pom.artifactId@

security:
basic:
enabled: true #开启基本鉴权
user:
name: root #默认用户名
password: root #默认密码

logback-spring.xml 日志配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- 此xml在spring-boot-1.5.3.RELEASE.jar里 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<!-- 开启后可以通过jmx动态控制日志级别(springboot Admin的功能) -->
<!--<jmxConfigurator/>-->

<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<property name="LOG_PATH" value="/data/logs/paascloud/${springAppName}"/>
<property name="LOG_FILE" value="${springAppName}"/>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}/${LOG_FILE}</File>
<encoder>
<pattern>%date [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 添加.gz 历史日志会启用压缩 大大缩小日志文件所占空间 -->
<fileNamePattern>${LOG_PATH}daily/${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory><!-- 保留30天日志 -->
</rollingPolicy>
</appender>


<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>

有以上这些东西,eureka就可以运行起来了,通过网址http://${eureka.instance.hostname}:${server.port}/eureka可以访问到管理页面,用刚才设置的用户名和密码登录即可。
本节到此结束,下一节我们来分析paascloud的配置中心discovery,感谢阅读!

-------------本文结束,感谢您的阅读-------------

本文标题:paascloud项目系列教程(一)

文章作者:饭饭君~

发布时间:2019年06月12日 - 10:46

最后更新:2019年06月17日 - 09:13

原始链接:https://yangcf.github.io/2019/06/12/paascloud项目系列教程一/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果我的文章有帮助到你,欢迎打赏~~
0%