zelentre / lejing-mall

乐璟商城

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

shanghao-idea

乐璟商城

微服务架构图

1 技术架构选型

第二代微服务架构,kubernetes高可用集群,全自动DevOps

springcloud与springboot对应版本

image-20210126234300478

spring boot的历史版本

image-20210126234531221

spring cloud的历史版本

image-20210224205205376

技术架构:

  • JDK11
  • MySQL-8.0.25
  • apache-maven-3.6.3
  • spring-boot 2.5.0
  • spring-cloud-2020.0.2
  • spring-cloud-alibaba 2021.1

架构图

2 IDEA环境JVM参数配置

tips: 主要目的减少web服务的的内存占用

JVM参数: -Xms256m -Xmx256m -Xmn100m -Xlog:gc*

image-20210207215344410

image-20210207215556800

3 已完成清单

  • 已封装BaseController,用于Controller数据返回

image-20210204005654609

  • 已封装BaseResult,返回结果封装 ,让接口的输入和输出更加明确

image-20210204010657082

image-20210204010822582

image-20210204010952249

  • 重新改造代码生成, 所有接口都可以生成测试文档, 支持在线调试接口, 执行mvn package自动出api文档,访问地址改成自己的端口号:http://127.0.0.1:10000/debug-all.html,

    image-20210205025359610

image-20210205024651157

基于Mybatis-Plus自动生成,支持复杂分页查询, 数据库变动只需要修改实体类即可

image-20210205025122573

image-20210205025022332

image-20210205024941585

  • 项目改造完成, 集成: 业务代码自动生成 -> 执行: mvn package, 自动输出可调式的高可读性api文档 -> 分层架构 -> 以最小的代价迎合业务的重大变更

  • 已接入ELK全家桶

image-20210307003402307

image-20210307003417433

4 待完成清单

  • 整合人人框架,提供:domain--> dao --> service --> controller --> 全自动api文档在线输出, 支持在线调试

    目的:让今后因业务变动影响数据库的变动只需要码农修改数据库对应的领域模型即可,节省更多的时间

  • 微服务计划

进行中......

  • 移除spring-cloud-alibaba 2.2.5.RELEASE 版本中微服务中通过feign远程调用时使用ribbon负载均衡的支持, 采用spring-cloud 2020.0.1spring cloud loadbalancer代替

5 Ubuntu环境Docker基础软件安装指南

5.1 安装ELK全家桶

  1. 下载本项目
git clone https://github.com/Weasley-J/lejing-mall
  1. 切换工作目录
cd shell
chmod 0777 -vR *.sh && ./run_elk_install.sh

5.2 修改logback-spring.xmllogstash的参数

image-20210303224138777

<destination>192.168.40.132:5044</destination>

以上标签值改为你自己的 Logstash 能接受log的主机ip:port

5.3 Logstash 成功接受日志的效果

  1. 终端

image-20210303224508305

  1. es中的索引数据

image-20210303224559097

image-20210303224642551

6 TIPS

本项目的api文档输出基于smart-doc和common工程里面我写的一些类完成的,不建议把common工程上传到maven私服上面,这会导致项目执行:

mvn package的时候不能读取common里面的一些相关类的注释,因为java最终编译成字节码文件后会把所有注释都清理掉,也就是项目最终的class文件不包含任何注释

6.1 nacos MySQL数据持久配置

文件相对路径:nacos-server/nacos-server-1.4.1/nacos/conf/application.properties

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.40.132:3306/nacos_config?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true&allowMultiQueries=true
db.user.0=root
db.password.0=123456

6.2 各个服务启动顺序

  • 启动nacos,进入终端:nacos-server/nacos-server-1.4.1/nacos/run-nacos-standalone.bat
  • 启动授权服务
  • 启动网关服务 lejing-gateway
  • 再启动其他相关服务

6.3 Elasticsearch索引库清理

使用curl命令模糊匹配删除,在shell终端上执行:

#!/usr/bin/env bash

# 全局变量,自行修改
IP="192.168.40.132"
PORT="9200"
USER="elastic"
PWD="123456"

# 删除乐景商城的日志索引库
curl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/lejing-*,renren-fast-*

# 删除kibana的日志索引库
curl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-kibana-*

# 删除logstash的日志索引库
curl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-logstash-*

# 删除es的日志索引库
curl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-es-*

6.4 前端项目启动

6.4.1 前端后台管理

#克隆项目,见lejing-web-frontend/lejing-manage/README.md文件

6.4.2 前端门户网站

前端多页面html使用live-server运行:

#打开CMD终端
cd lejing-web-frontend/lejing-portal
# npm下载live-server启动门户网站, 指定门户网站的端口8002
npm install -g live-server --registry=https://registry.npm.taobao.org && live-server --port=8002

7 Q&A

7.1 为什么分页不用mybatis-plus自带的IPage

mybatis-plusIPage分页入参不利于项目的API文档输出,毕竟我们都不想手写接口文档,如果你喜欢手写接口文档,然后再填入什么RAPYApi里面,我推荐你用回Swagger

7.2 解决github提交代码connection to github.com:443

fatal: unable to access ‘https://github.com/Weasley-J/lejing-mall’: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

在Git Bash终端中输入:

env GIT_SSL_NO_VERIFY=true

7.3 项目启动报错Web server failed to start. Port 8000 was already in use.

windows

netstat -aon | findstr "10000"

tasklist | findstr "1532"

taskkill /f /t /im "yundetectservice.exe"

image-20210611221759994

image-20210611221811205

About

乐璟商城

License:MIT License


Languages

Language:HTML 59.9%Language:JavaScript 24.6%Language:Java 8.6%Language:Vue 3.4%Language:CSS 3.1%Language:Shell 0.2%Language:TSQL 0.1%Language:SCSS 0.1%Language:Batchfile 0.0%Language:Mustache 0.0%Language:Python 0.0%Language:Dockerfile 0.0%