{"id":14983018,"url":"https://github.com/guoguang/madao_service","last_synced_at":"2025-04-05T01:05:36.229Z","repository":{"id":43748208,"uuid":"163474295","full_name":"GuoGuang/madao_service","owner":"GuoGuang","description":":tada: 一个基于Spring Cloud全家桶的微服务架构，可用于快速学习微服务架构，或企业环境开发，权限基于URL细粒度授权。                                   ","archived":false,"fork":false,"pushed_at":"2025-02-19T05:41:09.000Z","size":85204,"stargazers_count":135,"open_issues_count":0,"forks_count":22,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-05T01:05:28.294Z","etag":null,"topics":["blog","blog-engine","cms","crud","java-blog","jwt","management-system","microservice","oauth2","spring","spring-data-jpa","spring-mvc","springboot","springcloud","springcloud-demo","sso"],"latest_commit_sha":null,"homepage":"https://madaoo.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GuoGuang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-29T04:00:54.000Z","updated_at":"2025-03-07T15:03:03.000Z","dependencies_parsed_at":"2023-02-09T23:00:37.354Z","dependency_job_id":"84aeb9c7-4448-4759-be8c-3c46288a26aa","html_url":"https://github.com/GuoGuang/madao_service","commit_stats":{"total_commits":1448,"total_committers":7,"mean_commits":"206.85714285714286","dds":0.08218232044198892,"last_synced_commit":"f4487dfafd3ca7cfe8c58e0471647a9ea76172d9"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuoGuang%2Fmadao_service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuoGuang%2Fmadao_service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuoGuang%2Fmadao_service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuoGuang%2Fmadao_service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GuoGuang","download_url":"https://codeload.github.com/GuoGuang/madao_service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271526,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","blog-engine","cms","crud","java-blog","jwt","management-system","microservice","oauth2","spring","spring-data-jpa","spring-mvc","springboot","springcloud","springcloud-demo","sso"],"created_at":"2024-09-24T14:06:36.728Z","updated_at":"2025-04-05T01:05:36.209Z","avatar_url":"https://github.com/GuoGuang.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/GuoGuang/madao\" target=\"blank\"\u003e\n    \u003cimg src=\"https://yd-note.oss-cn-beijing.aliyuncs.com/favicon.ico\" height=\"90\" alt=\"madaoo.com logo\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/jdk-\u003e=17-blue.svg\" alt=\"vue\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-GPL%20(%3E%3D%202)-blue\" alt=\"vue\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/springcloud-2022.0.3-brightgreen.svg\" alt=\"element-ui\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/springboot-3.1.2-brightgreen.svg\" alt=\"license\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## [急速预览---直达](https://madaoo.com)\n\u003e 如果喜欢记得给个star哦🌟\n\n更多内容请关注公众号：`码道人生`\n\n![演示](http://vue-admin-guoguang.oss-cn-shanghai.aliyuncs.com/images/demo.jpg)\n\n本仓库基于spring、spring-boot、spring-cloud等全家桶模块搭建\n\n## 一、技术选型\n1. 核心框架：SpringBoot、SpringCloud全家桶、Python提供电影服务\n2. 安全框架：Spring Security\n3. 分布式任务调度：Elastic-job\n4. 持久层框架：Jpa\n5. 数据库连接池：Druid\n6. 数据库/存储：Mysql8.0+、Redis\n7. 消息队列：RabbitMQ\n8. 日志管理：Logback\n9. 三方服务： 邮件服务、阿里云短信服务、阿里云OSS对象存储\n10. 运维/集成/部署：Jenkins、Docker...\n\n## 二、前台项目请移步 \n- [后台管理系统](https://github.com/GuoGuang/madao_admin_manage)\n- [前台博客](https://github.com/GuoGuang/madao)\n\n## 三、其他开源仓库\n项目 | 地址\n---|---\nIDEA插件 （IDEA市场搜索 Generate Crud 安装） |  根据JPA实体类生成后端代码，简单快捷 👋\npinyinUtils | https://github.com/GuoGuang/pinyinUtils\n后台管理框架 | https://github.com/GuoGuang/madao_admin_manage\n数据爬虫集合 | https://github.com/GuoGuang/python-spider\n前台博客 | https://github.com/GuoGuang/madao\n如何写好单元测试 | https://github.com/GuoGuang/spring_junit_mockito_example\n\n\n## 四、平台目录结构说明\n```\n├─madao-common-parent----------------------------父项目，公共依赖\n│  │\n│  │─madao-authentication-server----------------认证服务\n│  │\n│  ├─madao-common--------------------------------微服务公共包\n│  │\n│  ├─madao-service-config-------------------------微服务配置中心+微服务注册中心\n│  │\n│  ├─madao-service-api---------------------------微服务API工程\n│  │\n│  ├─madao-service-article-----------------------文章服务\n│  │\n│  ├─madao-service-base--------------------------基础服务\n│  │\n│  ├─madao-service-search------------------------搜索服务\n│  │\n│  ├─madao-service-user--------------------------RBAC用户服务\n│  │\n│  ├─madao-web-gateway---------------------------微服务网关中心\n\n```\n### 前置环境\n1. IDE：IntelliJ IDEA\n2. JDK：17+ \n3. 工具：Maven\n\n## 五、快速开始\n\u003e 本项目需要你有一定得开发经验，对SpringCloud有基础的认识，此项目仅提供学习使用。\n\n\u003e 开源不易，如果此项目对您有帮助，麻烦点个star给作者一点动力，不胜感激。:sparkles:\n\n### 1. 导入服务\n![导入服务](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/service.png)\n点击 \"import module\" 将服务一一导入，如果你嫌一个个导入麻烦，可以在madao-common-parent的pom.xml文件中最底下把\u003cmodules\u003e标签放开，但是真正微服务开发一般一个团队或者一个人负责一个服务，没有一个人同时开发多个服务情况，毕竟是个人博客项目，导入方式可以自己定。\n```\n// install\nmvn -B -DskipTests install -f madao-common-parent -Dmaven.test.skip=true  \n或者 \nidea里 maven选项选中madao-common-parent install 需要在Maven Projects界面里中选中\"跳过测试\"\n```\n\n### 2. 初始化数据库\n导入系统根路径下madao.sql文件到数据库中\n\n### 3. 初始化中间件\n一个成熟的项目必然会依赖众多中间件，本项目也不例外，这里假设你会使用docker,如果你还没有接触到docker,那么可以参考我的另一篇文章[Docker入门](https://madaoo.com/article/1263480522076721152)\n\n    使用docker启动mysql、redis\n    ```\n    // mysql\n    docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql --lower_case_table_names=1\n    \n    // redis\n    docker run --name myredis -d -p 6379:6379 -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data redis  redis-server /etc/redis/redis.conf --requirepass \"root\" --appendonly yes\n    \n    // rebbitmq\n    docker run -d --name rabbit-server -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 5672:5672 -p 15672:15672 rabbitmq:3-management\n    \n    ```\n\n### 4. 配置注册中心远程仓库\ngithub fork此仓库[配置中心](https://github.com/GuoGuang/madao_config)\n1. 将里面的配置文件更改为你的地址\n2. 阿里云oss地址没有的话需要注释掉\n3. 将密码部分（{cipher}）改为你的真实密码（{cipher}是指用的加密数据）\n\n### 5.  配置注册中心远程地址\n在madao-server-config服务中找到bootstrap.yml文件，配置如下\n\n```\nspring:\n  profiles:\n    active: ${ACTIVE_PROFILE:dev}\n  cloud:\n    config:\n      server:\n        encrypt:\n          enabled: true # 启用config加密功能\n        git:\n          uri: 第2步配置的注册中心远程仓库地址\n          searchPaths: ${spring.profiles.active}\n          default-label: master\n          username: 你的github账号\n          password: '你的github密码'\n\n      enabled: true    # 开启消息跟踪\n\n# 非对称加密，将下面的配置注释。如果上面配置的\"你的github密码\"地方是明文，则注释掉下面配置\n# encrypt:\n#   key-store:\n#     location: classpath:xxx\n#     alias: xxx\n#     password: xxx\n#     secret: xxx\n```\n\n### 6. 生成store文件\n生成store文件并将其放到madao-server-config服务下的resources目录下。\n```shell\n\n# 生成keystore，或者直接用根目录下的madao.keystore文件\nkeytool -genkeypair -alias madaoo.com -keyalg RSA -dname \"CN=Web Server,OU=China,O=www.youwebsite.im,L=ShangHai,S=ShangHai,C=China\" -keypass madaoo.com -keystore madao.keystore -storepass madaoo.com\n# 生成crt，后面获取公钥\nkeytool -export -alias madaoo.com -file test.crt -keystore madao.keystore\n# 获取公钥，以文本方式打开rsa_public_key.pem，然后在配置中心配置其内容\nopenssl x509 -inform der -in test.crt -pubkey -noout \u003e rsa_public_key.pem\n\n# 远端配置中心示例：\ncom:\n  madao:\n    # 秘钥token，例：-----BEGIN PUBLIC KEY-----xxxx-----END PUBLIC KEY----- 取其中的xxxx\n    secretKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvbwpEqZcet2KRTppVazzOU55+w6o1pf/JSiQEYYpXw/wCRZCXTf2wqnoLjb50+21ZEIhAFkE9wvW1FjNpFO1zYcy0HcKvJQb8qhQhGUHmP4w6Qb9bRJXhGt4IoKApXVUN+A4+xz8xC+Jw6/zn46pNQv2e47HATm/P+0LDDqxU7MPhPvddr9ihKeeVCG+/8W2X2a4N/NHoQo0Q1AyGWQcVWnl4yYgKpmedk3eGLpuaHZKJxse5bb9K5mEk5vuRsEhTkhtLVH2HT3ZCDycJQPdXjv+iO88O5Nbj/Tc2wehxnD3GFBKPaOZWDwIcNyIOTXRa4OvVFtEe4Qb3wNNhIYfiQIDAQAB\n```\n\n### 7. 启动\n第一步首先启动madao-service-config服务，这个是注册中心+配置中心，然后再启动其他的服务。\n\n\n## Swagger\n[本地访问地址](http://127.0.0.1:8080/swagger-ui/)\n默认账号：admin 密码：password\n\n### SpringSecurity流程\n大致了解一下SpringSecurity的流程，方便对整个项目的了解\n![Security时序图](https://yd-note.oss-cn-beijing.aliyuncs.com/spring/Oauth%26SpringSecurity/SpringSecurity%20%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B%E6%97%B6%E5%BA%8F%E5%9B%BE.png)\n\n\n## 常见问题\n\n### 1、关于内存问题\nSpringCloud是比较吃内存的，如果你不指定内存大小，8G内存一般启3、4个就满了，所以这里需要配置下每个服务内存大小\n\n打开Environment config,如果你不指定在哪打开，参考https://www.jetbrains.com/help/idea/2019.3/run-debug-configuration-junit.html?utm_campaign=IU\u0026utm_content=2019.3\u0026utm_medium=link\u0026utm_source=product#configTab 的VM options\n\n类似 config、gateway、eureka、 Oauth2Authentication、服务配置为 -Xmx128m -Xms128m -Xmn50m \n\n其他的-Xmx236m -Xms236m -Xmn150m \n\n以上配置请不要再生产使用，仅作为本地开发调试，为解决内存不足问题的，当然如果你的内存够大，可以忽略以上配置\n\n### 2、javax.annotation.processing.FilerException: Attempt to recreate a file for xxx\nmaven install之前先maven clean\n\n\n## 启动微服务\n### 架构图\n![架构图](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/%E6%9E%B6%E6%9E%84%E5%9B%BE1.png)\n![架构图](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/%E6%9E%B6%E6%9E%84%E5%9B%BE2.png)\n\n### 服务监控平台\n启动 madao-service-monitor 服务 \n访问 [地址](http://127.0.0.1:9002)\n![图1](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/Application.png)\n![图2](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/Wallboard.png)\n![图3](https://github.com/GuoGuang/madao_service/blob/develop/madao-common-parent/image/Details.png)\n\n## 更新日志\n- [20211128]：实现分布式Socket弹幕功能\n- [20211111]：基于loadbalancer重写负载均衡器，实现前端指定后端实例访问的功能。\n- [20210505]：将资源缓存化，加快访问速度。\n- [20210412]：移除不必要得依赖，项目结构重构。\n- [20210204]：Spring-Cloud-Gateway 集成 Swagger,支持认证后访问，由网关统一管理。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoguang%2Fmadao_service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguoguang%2Fmadao_service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoguang%2Fmadao_service/lists"}