
SpringCloud企业级开发框架
文章平均质量分 89
GitEgg 是一款开源免费的企业级微服务应用开发框架,旨在整合目前主流稳定的开源技术框架,集成常用的最佳项目解决方案,实现可直接使用的微服务快速开发框架。
全栈程序猿
阿里云开发者社区专家博主、企业级微服务开发平台GitEgg作者。
展开
-
【全栈开发指南】GitEgg-Cloud开启分库分表配置
因为在实际业务应用中,大部分的业务需求达不到分库分表的级别,有的业务稍微复杂点可能分库就可以搞定,不需要分表,所以这里注释关闭掉了shardingsphere-jdbc分库分表和Seata分布式事务的配置,只保留了dynamic-datasource动态多数据源的配置,如果需要使用分表和分布式事务,那么把注释打开即可。原创 2023-10-12 15:58:31 · 1040 阅读 · 0 评论 -
【微服务部署】十、使用Docker Compose搭建高可用Redis集群
现如今,业务系统对于缓存Redis的依赖似乎是必不可少的,我们可以在各种各样的系统中看到Redis的身影。考虑到系统运行的稳定性,Redis的应用和MySQL数据库一样需要做到高可用部署。原创 2023-10-11 10:12:09 · 2088 阅读 · 0 评论 -
【微服务部署】八、HAProxy+Keepalived高可用负载均衡集群配置
创建脚本存放目录新建haproxy_check.sh文件haproxy_check.sh内容如下:/bin/bashthensleep 3thenexit 1fifiexit 0赋予haproxy_check.sh执行权限关于SSL证书是放在Nginx处理还是HAProxy处理,网上有相关压测结果,HAProxy的性能不如Nginx,所以我们使用SSL-Pass-Through透传的方式,将SSL证书放在Nginx处理。可以测试HAProxy使用SSL证书访问Java后台服务。原创 2023-10-11 10:08:34 · 3013 阅读 · 2 评论 -
【微服务部署】七、使用Docker安装Nginx并配置免费的SSL证书步骤详解
通过Docker安装的Nginx,映射的目录往往没有默认的配置文件和页面,如果随便从其他位置复制,如果配置文件版本不同,会导致Nginx无法访问。为了解决这个问题,先创建一个Nginx容器,将配置文件和默认的页面提前复制到宿主机的映射目录,再把容器删除即可。我们只是用到它的默认配置文件和页面,后面步骤是具体搭建Nginx。免费的证书有效期只有一年,而且是单域名证书,对于小型项目或者刚刚起步的网站,可以节省成本,就是在操作上需要每年重新申请一次。如果使用docker命令安装,则不需要这一步骤。原创 2023-10-11 09:25:08 · 2473 阅读 · 0 评论 -
【微服务部署】六、使用Jenkins+SonarQube进行代码质量检查配置步骤详解
如果安装时出现错误,一般是安装的插件和当前SonarQube版本不兼容,此时需要到插件官网下载SonarQube对应版本的插件放到,我们的目录下/data/docker/ci/sonarqube/extensions/downloads,然后通过 配置>系统>重启服务器,即可使插件生效。原创 2023-09-05 23:17:19 · 1875 阅读 · 0 评论 -
【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解
维护者信息# 将生成的静态页面文件复制到nginx的/usr/share/nginx/html/目录# 容器启动时运行的命令"]原创 2023-09-04 10:12:09 · 6203 阅读 · 0 评论 -
【微服务部署】四、Jenkins一键打包部署NodeJS(Vue)前端项目步骤详解
services:##nginx配置nginx:ports:#端口映射,前面是宿主机端口,后面是服务端口- 80:80- 443:443volumes:#若用到ssl,可以引入ports:端口映射,前面是宿主机端口,后面是容器内部服务端口volumes:目录映射,前面是宿主机目录,后面是容器内部目录。原创 2023-09-04 09:42:03 · 5003 阅读 · 0 评论 -
【微服务部署】二、Jenkins一键打包部署SpringBoot应用步骤详解
本文介绍使用Jenkins一键将SpringBoot应用打包并上传到生产环境服务器运行,这里使用的是直接在服务器上运行FagJar的方式,首先确保服务器环境配置好,安装必须的JDK运行时环境,运行目录,日志存放目录等。原创 2023-08-30 09:31:40 · 1710 阅读 · 0 评论 -
【微服务部署】一、使用docker-compose部署Jenkins、SonarQube、PostgreSQL
修改Maven全局配置中配置文件里面的jar包存储路径,否则不同任务构建都会重新下载jar包。Maven安装,最好自己下载后上传到服务器,因为使用服务器下载安装很慢。在Jenkins的depends_on:添加。Maven全局配置,配置Maven的配置文件。SonarQube Scanner安装。原创 2023-08-30 09:19:38 · 2041 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(五十三):微信小程序授权登录增加多租户可配置界面
GitEgg框架集成weixin-java-miniapp工具包以实现微信小程序相关接口调用功能,weixin-java-miniapp底层支持多租户扩展。每个小程序都有唯一的appid,weixin-java-miniapp的多租户实现并不是以租户标识TenantId来区分的,而是在接口调用时,传入appid,动态切换ThreadLocal的appid来实现多租户的。并且其多个微信小程序的配置,都是在配置yml文件中的,在实际业务运营过程中,如果需要新增多租户小程序就修改配置文件显然是不合适的。原创 2023-07-28 16:22:47 · 3080 阅读 · 1 评论 -
【全栈开发指南】Mysql8 开启远程登录(docker-compose安装 )
【代码】【全栈开发指南】Mysql8 开启远程登录(docker-compose安装 )原创 2023-10-12 16:14:48 · 2039 阅读 · 0 评论 -
【全栈开发指南】数据权限使用配置
数据权限配置有两种方式:通过系统配置界面,实时配置生效。通过代码注解配置。原创 2023-07-11 18:06:17 · 4120 阅读 · 0 评论 -
【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库
在使用sentinel-dashboard的时候,发现官方并没有把jar包发布到Docker Hub镜像仓库,所以,我们需要自己手动将需要版本的sentinel-dashboard.jar发布到Docker Hub镜像仓库。发布成功后,登录网站就可以在个人中心查看到自己发布的docker镜像了,同理,其他我们需要发布的docker镜像也可以通过这种方式发布。原创 2023-10-12 16:10:32 · 1814 阅读 · 0 评论 -
【全栈开发指南】VUE前端路由设计及配置
我们在使用Vue.js时,创建单页面应用一定会用到路由,Vue Router 是 Vue.js 官方的路由管理器,我们在开发框架中过程中,需要结合Vue Router路由管理器提供的功能,设计和实现系统中菜单的配置。原创 2023-07-10 11:02:29 · 1220 阅读 · 0 评论 -
【全栈开发指南】OAuth2授权获取token调试接口的方式
在我们实际应用接口的调用调试过程中,需要用到token或者刷新token,GitEgg支持OAuth2.0协议进行认证授权,这里介绍说明如何通过Postman获取token和refresh_token并进行接口调试。原创 2023-07-07 11:26:54 · 9240 阅读 · 0 评论 -
【K8S专题】四、Kubernetes 安装配置
镜像加速:修改 kube-flannel.yml 文件,将 quay.io/coreos/flannel:v0.15.0 改为 quay.mirrors.ustc.edu.cn/coreos/flannel:v0.15.0。服务显示 service/nginx 的 PORT(S)为 80:32605/TCP, 我们在浏览器中访问主从地址的 32605 端口,查看 nginx 是否运行。在 Node 节点(172.16.20.112 和 172.16.20.113)运行上一步初始化成功后显示的加入集群命令。原创 2023-04-21 11:07:10 · 1005 阅读 · 0 评论 -
【K8S专题】三、Harbor 私有镜像仓库安装配置
首先需要按照前面的步骤,在环境上安装 Docker,才能安装 Harbor, 重新设置一台服务器 172.16.20.175,不要放在 K8S 的主从服务器上。原创 2023-04-20 21:06:51 · 650 阅读 · 0 评论 -
【K8S专题】二、Docker 环境安装配置
通过修改 daemon 配置文件/etc/docker/daemon.json 加速,如果使用 k8s,这里一定要设置 “exec-opts”: [“native.cgroupdriver=systemd”]。“insecure-registries” : [“172.16.20.175”]配置是可以通过 http 从我们的 harbor 上拉取数据。选择对应的版本进行下载,然后上传到服务器/usr/local/bin/目录。修改 ExecStart,添加 -H tcp://0.0.0.0:2375。原创 2023-04-20 10:32:42 · 819 阅读 · 0 评论 -
【K8S专题】一、集群环境规划配置
生产环境不要使用一主多从,要使用多主多从。这里使用三台主机进行测试一台 Master(172.16.20.111),两台 Node(172.16.20.112 和 172.16.20.113)原创 2023-04-20 10:29:22 · 817 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(五十二):第三方登录-微信小程序授权登录流程设计和实现
因为我们的开发框架是支持多租户的,同时也是支持多个小程序的,为了同一套后台可以支持多个微信小程序,这里选择在发布的微信小程序中配置appId,由微信小程序前端参数来确定具体的微信小程序。// 获取用户信息// 获取用户信息// 获取用户手机号// 绑定微信账号// 解绑微信账号// 登录// 退出登录// 获取登录用户信息。原创 2023-03-24 14:14:06 · 1265 阅读 · 1 评论 -
SpringCloud微服务实战——搭建企业级开发框架(五十一):微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击
SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作。XSS全称为Cross Site Script跨站点脚本攻击,和SQL注入类似,都是通过特定方式向系统发送攻击脚本,对系统进行控制和侵害。SQL注入主要以攻击数据库来达到攻击系统的目的,而XSS则是以恶意执行前端脚本来攻击系统。原创 2023-03-10 18:56:35 · 1337 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(五十):集成移动端推送功能的系统通知公告数据库设计
系统的通知公告功能似乎是很容易被忽略的功能模块,在传统的软件系统中,一般OA类软件系统不可或缺,而在应用软件系统中此功能或有或无,在现在大多数的互联网软件系统中,此功能又必不可缺。所以,在框架设计时,我们需要考虑业务系统是否需要此功能模块,然后将此功能作为扩展插件,在需要时开启,在不需要时配置关闭即可。在系统公告设计之前,我们需要综合考虑目前系统通知公告功能都有哪些类型和实现方式。在类型方面如果是电商类网站,那么系统的通知公告有账户变动通知、物流变动通知、订单变动通知等等;原创 2023-03-07 13:07:09 · 1466 阅读 · 0 评论 -
新建微服务模块Maven子工程
下面以常用的电商项目举例新建Maven子工程,电商项目一般包含商品微服务,订单微服务,支付微服务,账户微服务等,我们的整体规划是将电商项目作为一个整体的微服务Maven父工程,商品微服务,订单微服务,支付微服务,账户微服务作为电商项目的子工程,微服务之间通过Feign相互调用,所以我们在gitegg-cloud下新建gitegg-mall和gitegg-mall-client两个Maven工程。4、同样的方式创建gitegg-mall-client父工程,用于存放微服务之间相互调用的Feign客户端。原创 2023-02-22 14:18:02 · 929 阅读 · 1 评论 -
4、Flutter开发-导入并升级flutter-go示例
复制FlutterGo项目中lib/api,lib/blocs,lib/components,lib/event,lib/model,lib/page_demo_package,lib/resources,lib/routers,lib/standard_pages,lib/utils,lib/widgets文件夹下所有代码到新建的项目中,将FlutterGo项目中assets文件夹复制到新建项目的根目录下。15、将FlutterGo下的lib/widgets目录复制到我们新建的项目中。原创 2013-01-05 22:38:22 · 573 阅读 · 1 评论 -
3、Flutter开发-创建第一个Flutter应用
Project name输入项目名称,Flutter SDK path选择第一章节中安装的Flutter目录,Project location选择项目代码存放目录,Description填写描述信息,勾选上Create project offline,然后点击Next。5、至此,第一个Flutter创建成功,在代码编辑界面,右下角有错误提示,KOTLIN_BUNDLED is undefined. 直接点击后面的Fix it即可。2、选择Flutter Application,点击Next。原创 2012-12-03 22:27:49 · 566 阅读 · 1 评论 -
2、Flutter开发-安装和配置Android Studio
b、在左侧菜单中输入Flutter,在列表中的Flutter点击Install,进行插件安装,弹出框点击yes,会提示安装Flutter需要安装Dart,点击Install。11、选择 Standard(标准) 或 Custom(自定义)安装,因为上面没有安装Android SDK,这里选择自定义安装,选择Custom,然后点击Next。7、此时弹出提示,是否导入配置文件,如果没有安装过,默认选择第二个不导入即可,然后点击OK。原创 2012-05-29 23:06:58 · 1408 阅读 · 1 评论 -
1、Flutter开发-安装和配置Flutter SDK
获取SDK有两种方式,可以直接下载zip包,也可以直接git下载源代码,下载zip包有个问题就是在执行flutter doctor时会提示不是git目录,此时只要新建或者复制一个flutter的 .git文件夹即可。还有一种是使用git直接下载,这里使用git进行下载,使用的时候可以随时切换需要的Flutter版本。2、下载完成之后,Flutter路径为:D:\Flutter\flutter,找到flutter_console.bat双击运行,就可以在命令行运行flutter命令了。原创 2012-05-16 21:09:38 · 794 阅读 · 1 评论 -
【Linux环境搭建】十三、Linux(CentOS7) Redis集群模式和哨兵模式配置
把修改后的配置文件,copy到6379、6378,修改第2、3、5项里的端口号,可以用批量。首先配置Redis的主服务器,修改redis.conf文件如下。配置Redis的从服务器,修改配置文件redis.conf。%s/源字符串/目的字符串/g。一、Redis集群配置。原创 2012-01-10 23:48:35 · 190 阅读 · 1 评论 -
【Linux环境搭建】十二、Linux(CentOS7) 时序数据库InfluxDB及Influx-proxy安装配置
internal 库默认的retention策略是7天,如果你想使用一个自己的retention策略,需要自己创建。依赖的环境有:Golang >= 1.7 Redis-server Python >= 2.7 ,redis使用已有的集群,这里不再安装。2、解压到指定文件夹,这里我解压到 /usr/local 目录下,这也是官方文档推荐的位置。3、创建工作目录,我把 Go 代码放在自己的用户目录下,根据自己的需要进行创建即可。1、安装下载好的所有的rpm包(使用最新的gcc安装包)1、meta相关配置。原创 2012-01-07 08:01:06 · 1790 阅读 · 1 评论 -
【Linux环境搭建】十一、Linux(CentOS7) 搭建Kafka集群
三、在各台服务器的zookeeper数据目录/data/zookeeper/data添加myid文件,写入服务broker.id属性值。7、测试:在生产者输入test,可以在消费者的两台服务器上看到同样的字符test,说明Kafka服务器集群已搭建成功。kafka启动时先启动zookeeper,再启动kafka;在data文件夹中新建myid文件,myid文件的内容为1(一句话创建:echo 1 > myid)四、kafka配置,进入config目录下,修改server.properties文件。原创 2012-01-06 22:32:01 · 314 阅读 · 1 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架
uni-app默认使用uni-ui全端兼容的、高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用。如果作为初创公司,自身又不想费太多精力去自己设计一套UI框架,那么DCloud插件市场提供了很多优秀的UI框架,最重要的是有些UI框架能够提供一整套行业的页面模板,比如,前几年电商项目比较火,Vant、ColorUI等提供了一整套电商模板方案,界面设计非常精美。原创 2022-10-28 13:51:25 · 923 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
近年来uni-app发展势头迅猛,只要会vue.js,就可以开发一套代码,发布移动应用到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。凭借着此跨平台的特性,吸引了大批公司和开发者的青睐,据官网显示目前其有900万开发者、数百万应用、12亿手机端月活用户、数千款uni-app插件。正如优秀的软件设计一样,uni-app把一些移动端常用的功能做成了独立的服务或者插件,我们在使用的时候只需要选择使用即可。原创 2022-10-25 09:21:23 · 1331 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
Prometheus是一款开源的系统和服务监控系统,属于云原生计算基金会项目。它可以通过设置的时间间隔从配置的目标系统采集指标数据,保存指标数据(时序数据库),评估规则表达式,显示结果,并在检测到指定条件时触发警报。多维数据模型Prometheus实现了一个高维数据模型,它从根本上将所有数据存储为时间序列属于同一指标和同一组标记维度的时间戳值。除了存储的时间序列,Prometheus可能会生成临时派生的时间序列作为查询的结果。高效存储可视化具有多种选项的快速灵活的客户端图表。...原创 2022-07-29 12:38:03 · 5130 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统
业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件。spring-boot-starter-actuator提供的是一系列HTTP或者JMX监控端点,通过监控端点我们可以获取到系统的运行统计信息,同时,我们可以自己选择开启需要的监控端点,也可以自定义扩展监控端点。...原创 2022-07-27 13:11:12 · 2007 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
在日常生活中,邮件已经被聊天软件、短信等更便捷的信息传送方式代替。但在日常工作中,我们的重要的信息通知等非常有必要去归档追溯,那么邮件就是不可或缺的信息传送渠道。对于我们工作中经常用到的系统,里面也基本都集成了邮件发送功能。 SpringBoot提供了基于JavaMail的starter,我们只要按照官方的说明配置邮件服务器信息,即可使我们的系统拥有发送电子邮件的功能。但是,在我们GitEgg开发框架的实际业务开发过程中,有两个问题需要解决:一个是SpringBoot邮箱服务器的配置是配置在配置文件原创 2022-07-07 13:12:41 · 1476 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
定时任务几乎是每个业务系统必不可少的功能,计算到期时间、过期时间等,定时触发某项任务操作。在使用单体应用时,基本使用Spring提供的注解即可实现定时任务,而在使用微服务集群时,这种方式就要考虑添加分布式锁来防止多个微服务同时运行定时任务而导致同一个任务重复执行。 除了使用注解,现在还有一种方式,就是搭建分布式任务平台,所有的微服务注册到分布式任务平台,由分布式任务平台统一调度,这样避免了同一任务被重复执行。这里我们选择使用XXL-JOB作为分布式任务调度平台,XXL-JOB核心设计目标是开发迅速、原创 2022-06-10 13:16:40 · 7251 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(四十一):扩展JustAuth+SpringSecurity+Vue实现多租户系统微信扫码、钉钉扫码等第三方登录
目前很多平台都提供了单点登录授权服务器功能,比如我们经常用到的QQ登录、微信登录、新浪微博登录、支付宝登录等等。 如果我们自己的系统需要调用第三方登录,那么我们就需要实现单点登录客户端,然后跟需要对接的平台调试登录SDK。JustAuth是第三方授权登录的工具类库,对接了国外内数十家第三方登录的SDK,我们在需要实现第三方登录时...原创 2022-06-09 14:22:02 · 3219 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(三十九):使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制
通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置。 考虑到微服务分布式的场景,这里通过使用Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求的功能,基本实现思路:通过在需要防重的接口添加自定义防重注解,设置防重参数,通过AOP拦截请求参数,根据注解配置,生成分原创 2022-04-13 12:49:38 · 2058 阅读 · 0 评论 -
SpringCloud微服务实战——搭建企业级开发框架(三十八):搭建ELK日志采集与分析系统
一套好的日志分析系统可以详细记录系统的运行情况,方便我们定位分析系统性能瓶颈、查找定位系统问题。上一篇说明了日志的多种业务场景以及日志记录的实现方式,那么日志记录下来,相关人员就需要对日志数据进行处理与分析,基于E(ElasticSearch)L(Logstash)K(Kibana)组合的日志分析系统可以说是目前各家公司普遍的首选方案。Elasticsearch: 分布式、RESTful 风格的搜索和数据分析引擎,可快速存储、搜索、分析海量的数据。在ELK中用于存储所有日志数据。Logst原创 2022-02-24 13:15:26 · 2198 阅读 · 3 评论 -
SpringCloud微服务实战——搭建企业级开发框架(三十七):微服务日志系统设计与实现
针对业务开发人员通常面对的业务需求,我们将日志分为操作(请求)日志和系统运行日志,操作(请求)日志可以让管理员或者运营人员方便简单的在系统界面中查询追踪用户具体做了哪些操作,便于分析统计用户行为;系统运行日志又分为不同的级别(Log4j2): OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL,这些日志级别由开发人员在代码编写时确定,并编写在代码中,系统运行时记录,方便系统开发人员分析定位解决问题,查找原创 2022-02-18 13:04:59 · 3800 阅读 · 0 评论