微服务电商项目

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.jarhttps://projectlombok.org/download.html

2.运行Lombok.jar: Java -jar D:\software\lombok.jar D:\software\lombok.jar这是windowslombok.jar所在的位置

数秒后将弹出一框,以确认eclipse的安装路径

3.确认完eclipse的安装路径后,点击install/update按钮,即可安装完成

4.安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其

配置文件eclipse.ini中是否添加了如下内容

    -javaagent:lombok.jar

    -Xbootclasspath/a:lombok.jar

那么恭喜你已经安装成功,否则将缺少的部分添加到相应的位置即可 

5.重启eclipsemyeclipse

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了,自己体验吧

 

  

 

 

 

 

 

 

 

 

 

posted on 2019-12-14 16:19  dysdhd  阅读(120)  评论(0编辑  收藏  举报