微服务电商项目
1、知识点
1、多线程 线程安全,线程通讯,java并发包,线程池及配置,信号量,锁
2、se核心,反射、自定义注解
3、网络通讯 socket,tcp与udp,nio,aio,bio,netty
4、jvm核心 垃圾回收机制,新生代和老年代,并行/串行回收
5、javaweb 表单防提交token+验证码,
6、跨域解决方案 nginx搭建网关,httpclient转发请求,zuul网关
7、mysql优化
8、spring事务原理,传播行为,注意点:不要捕获异常,否则不会自动回滚,通过aop的异常通知进行的
9、SpringBoot,springmvc,SpringCloud
10、nginx配置、负载算法,redis常用命令、数据类型
11、消息中间件 异步机制,防止阻塞
2、项目简介
SpringBoot+SpringCloud +Maven+Redis+ActiveMQ+XXLJOB(分布式任务调度)+ Freemarker等。
使用 SpringCloud Eureka作为注册中心、Feign客户端调用工具、断路器Hystrix
视图展示使用Freemarker、数据库层使用Mybatis框架、缓存使用Redis、数据库使用MySQL
项目管理工具使用Maven、版本控制工具使用SVN、项目自动部署工具使用Jenkins
消息中间件使用ActiveMQ、分布式任务调度系统使用XXLJOB、反向代理工具使用Nginx
日志管理插件工具使用lombok、分布式日志收集使用Logstash、解析JSON框架使用FastJson
数据安全加密使用MD5加盐和Base64、RSA、分布式文件存储系统FastDFS等。
支付网关接口使用支付宝、第三方登录使用QQ授权等。
3、搭建maven子父工程
1、创建父工程
创建maven工程,packaging选择pom
2、注册中心
1、配置信息
2、启动
3、API模块
4、API实现
配置信息
5、lombok安装
作用:简化java的重复代码
1.下载lombok.jar包https://projectlombok.org/download.html
2.运行Lombok.jar: Java -jar D:\software\lombok.jar D:\software\lombok.jar这是windows下lombok.jar所在的位置
数秒后将弹出一框,以确认eclipse的安装路径
3.确认完eclipse的安装路径后,点击install/update按钮,即可安装完成
4.安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其
配置文件eclipse.ini中是否添加了如下内容:
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
那么恭喜你已经安装成功,否则将缺少的部分添加到相应的位置即可
5.重启eclipse或myeclipse
5.1 简化get,set方法
5.2 简化日志打印
添加SLF4J注解后,直接使用log打印日志即可
6、日志配置
在具体的项目中添加日志配置文件即可
7、数据库整合
8、搭建activemq基础的消息服务平台
配置信息:
消费者:
生产者:
9、邮件发送
配置:
代码:
10、web开发
引入依赖:
11、微信开发
1、混合开发技术
原生态(通过自己语言编写的客户端,即C端) + H5
2、官方网址
微信公众平台--开发公众号
https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN
微信开放平台--提供微信接口
3、外网映射工具
natapp--收费
ngrok--免费
12、支付项目
1、聚合支付
将主流的支付平台整合在一起,应该类似银行的统一支付
只适合于小公司,不适合于大公司
2、支付流程
1、以post请求方式提交参数到支付宝
2、支付宝同步通知支付结果(本地浏览器重定向)
3、支付宝异步通知,调用接口进行通知订单状态(也相当于一次补偿机制)
安全性:1、https;2、加签(防止数据被篡改);3、其他加密方式,如MD5,Base64等;
加密方式:对称加密和非对称加密
3、支付宝沙箱环境
https://openhome.alipay.com/platform/appDaily.htm
4、加密方式
单向加密-不可逆:MD5
对称加密-可逆:base64,DES,AES
非对称加密:
RSA 公钥和私钥 ---安全性较高
支付宝加密:
应用端使用支付宝公钥加密,发送给支付宝
支付宝端使用应用公钥加密,发送给应用端
5、项目整合支付宝支付流程
1、支付信息表中登记支付信息
2、生成支付令牌,redis存储key为令牌,value为支付信息id,设置超时时间
3、返回令牌给客户端
4、使用令牌查询redis的id
5、查询支付信息表,获支付信息、
6、封装支付宝form信息提交
6、同步回调解决get请求url带参数问题
参考支付宝生成payHtml返回后直接执行提交表单方式,生成表单数据,再次提交后后进行页面展示
7、异步回调
关键点:
异步回调的幂等性
13、分布式事务
1、CAP和BASE理论
CAP:consistency,availability,partition tolerance
BASE:Basically Available(基本可用)、Soft-state( 软状态/柔性事务)、Eventual Consistency(最终一致性)
2、柔性事务和刚性事务
柔性事务满足BASE理论(基本可用,最终一致)
刚性事务满足ACID理论
柔性事务:两段提交,补偿,异步通知,
3、解决方案:
2PC:
3PC:
JTA:
TCC:
ZK:通过事件通知
4、2PC-两段提交
第一阶段:准备阶段(投票阶段)和第二阶段:提交阶段(执行阶段)。
5、解决框架:
LNC:
GTS:
6、LCN框架
1、特性:LCN并不生产事务,LCN只是本地事务的协调工
2、流程:
http://www.txlcn.org/zh-cn/docs/principle/control.html
7、整合LCN框架
使用版本:4.1.0
添加依赖:
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>transaction-springcloud</artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
添加配置:
tm:
manager:
url: http://127.0.0.1:8899/tx/manager/
添加服务实现类:
发起者添加注解:
参与者实现接口:
OK了,自己体验吧