All Projects → fashionbrot → mars-config

fashionbrot / mars-config

Licence: Apache-2.0 license
springmvc 、springboot、springcloud 动态配置系统。http 轮询方式 更新 动态配置

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to mars-config

Javacollection
Java开源项目之「自学编程之路」:学习指南+面试指南+资源分享+技术文章
Stars: ✭ 2,957 (+17294.12%)
Mutual labels:  springboot, springcloud
skycloud-base
🔥springcloud脚手架,配置中心(apollo/nacos) 注册中心(consul/nacos) 分布式事物(seata) 调用链(skywalking) 日志(ELK)监控(prometheus与grafana) 等,适合学习与快速开发使用
Stars: ✭ 80 (+370.59%)
Mutual labels:  springboot, springcloud
Spring Cloud Study
SpringCloud源码实战微服务框架(202003更新到SpringCloud的Greenwich版本,即基于SpringBoot2.1.7版本,以及新增SpringCloud Alibaba从入门到精通教程),涉及内容:配置中心,注册中心,服务提供者,服务消费者,熔断器,配置服务,API Gateway,API网关限流ratelimit,服务链路追踪zipkin,hystrix监控,监控聚合中心turbine等
Stars: ✭ 215 (+1164.71%)
Mutual labels:  springboot, springcloud
Roses
Roses基于Spring Boot 2和Spring Cloud Finchley.RELEASE,致力做更简洁的分布式和服务化解决方案,Roses拥有高效率的开发体验,提供可靠消息最终一致性分布式事务解决方案,提供基于调用链的服务治理,提供可靠的服务异常定位方案(Log + Trace)等等,一个分布式框架不仅需要构建高效稳定的底层开发框架,更需要解决分布式带来的种种挑战!
Stars: ✭ 181 (+964.71%)
Mutual labels:  springboot, springcloud
taotao-cloud-project
微服务开发脚手架,包括大数据模块、微服务模块、前端模块。基于Spring Cloud Alibaba的微服务架构。提供技术框架的基础能力的封装,减少开发工作,只关注业务,包含了工作以来的工作总结和技术沉淀
Stars: ✭ 76 (+347.06%)
Mutual labels:  springboot, springcloud
Learningsummary
涵盖大部分Java进阶需要掌握的知识,包括【微服务】【中间件】【缓存】【数据库优化】【搜索引擎】【分布式】等等,欢迎Star~
Stars: ✭ 201 (+1082.35%)
Mutual labels:  springboot, springcloud
Javaweb Project Source Share
🌱🚀分享基于Servlet、SSH、SSM、SpringBoot等流行技术实现的JavaWeb项目,难度分为5个等级,帮助小白入门JavaWeb开发,协助JavaWeb开发者熟悉最新技术
Stars: ✭ 229 (+1247.06%)
Mutual labels:  springboot, springcloud
Xc Spring Cloud Alibaba
spring cloud alibaba(2.2.1最新版)+nacos+dubbo+gateWay+sentinel+rocketmq+(pgsql/mysql8.0的json支持)+ignite集成可用于docker分布式框架+分布式自动化任务+mybatis多数据源+seate+ shardingSphere分布式分库事务解决方案
Stars: ✭ 131 (+670.59%)
Mutual labels:  springboot, springcloud
service-api
Report portal. Main API Service
Stars: ✭ 35 (+105.88%)
Mutual labels:  springboot, springcloud
robert
基于SpringCloud的企业级微服务多租户系统、多语言的脚手架, 代码组件化、高内聚低耦合,代码简介,注释丰富容易上手,该项目包括用于开发分布式应用程序服务的必要组件,支持多应用程序访问,并使开发人员可以轻松地使用Spring Cloud编程模型来开发分布式应用程序服务。
Stars: ✭ 45 (+164.71%)
Mutual labels:  springboot, springcloud
Ruoyi Cloud
(RuoYi)官方仓库 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统
Stars: ✭ 160 (+841.18%)
Mutual labels:  springboot, springcloud
Java-CS-Record
记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后续请移步博客
Stars: ✭ 73 (+329.41%)
Mutual labels:  springboot, springcloud
Hope Cloud
🐳 Hope-Cloud is a Java microservice project
Stars: ✭ 155 (+811.76%)
Mutual labels:  springboot, springcloud
Jeecg Cloud
基于Spring Boot 2.1.3、 Spring Cloud Greenwich.SR3 & Alibaba、 Shiro、JWT的 JAVA快速开发平台(Jeecg Boot的微服务版本,功能和底层代码,两边保持同步)
Stars: ✭ 205 (+1105.88%)
Mutual labels:  springboot, springcloud
Springbootvulexploit
SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估 check list
Stars: ✭ 3,196 (+18700%)
Mutual labels:  springboot, springcloud
Bcmall
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。
Stars: ✭ 188 (+1005.88%)
Mutual labels:  springboot, springcloud
Microservice Recruit
基于微服务架构实现的智能招聘系统(用于毕业设计)-前端地址:https://github.com/Clairezyw/recruit
Stars: ✭ 124 (+629.41%)
Mutual labels:  springboot, springcloud
Lamp Util
lamp-util 的前身是 zuihou-commons,在3.0.0版本之后,改名为lamp-util,它是lamp项目的其中一员。 lamp-util 是 lamp-cloud 和 lamp-boot 项目的核心工具包,开发宗旨是打造一套兼顾 SpringBoot 和 SpringCloud 项目的公共工具类。
Stars: ✭ 129 (+658.82%)
Mutual labels:  springboot, springcloud
note
📝个人知识体系 算法与数据结构 / 操作系统 / 数据库 / 计算机系统 / 网络 / 中间件 / Java / 架构 / 前端 / 运维 / 网络安全 / 软技能
Stars: ✭ 40 (+135.29%)
Mutual labels:  springboot, springcloud
vm-engine
vm-engine为“微视频”网站的后端,java语言开发。涉及技术包括,springboot,springcloud,mybaties,docker,websocket,rabbitmq,redis等。
Stars: ✭ 57 (+235.29%)
Mutual labels:  springboot, springcloud

mars 配置介绍

mars-config 包含两种配置
第一种是对 properties 的动态配置修改功能,节省了我们频繁部署上线去修改 properties 的值。
第二种是对一条或多条数据的配置系统,主要是针对数据量小的表集中通过 mars-config配置,节省了我们创建小表带来的工作量;通过mars-config 配置可以直接通过集成api 直接获取对应的数据,从而节省了我们的开发时间。

软件架构及软件架构说明

  1. 后端使用技术 :springboot mybatis jwt
  2. 前端使用:thymeleaf 模板引擎
  3. 数据库 :mysql
  4. jdk :1.8
  5. 【客户端】 使用框架spring、springboot、springcloud 系统

安装教程

  1. 先创建数据库mars_db ,导入 sql目录下的 init.sql 文件
  2. 修改 mars-console-2.0.0.jar 包中的配置文件 \BOOT-INF\classes\application.properties 中的mysql 配置,及端口,使用命令 java -jar mars-console-2.0.0.jar 启动
  3. 访问地址:ip + port 账户:mars 密码:mars 权限:超级管理员
  4. mars-console-2.0.0.jar 可以配置化集群模式
#【后端系统】集群配置
mars.cluster.address=ip:port,ip2:port,ip3:port
#【后端系统】同步其他服务器重试次数(默认3)
mars.cluster.sync.retry=3

使用说明

1、【客户端】 引入jar 包, 分为spring、springboot|springcloud 各自支持的jar

<!-- spring 引入 -->
<dependency>
    <groupId>com.github.fashionbrot</groupId>
    <artifactId>mars-spring-config</artifactId>
    <version>2.0.0</version>
</dependency>

<!-- springboot or springcloud 引入 -->
<dependency>
    <groupId>com.github.fashionbrot</groupId>
    <artifactId>mars-config-springboot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

2、 【客户端】properties 配置

配置参数 配置说明 是否必填
mars.config.app-id 应用名称 必填
mars.config.env-code 环境code 必填
mars.config.server-address server地址多个逗号分隔 必填
mars.config.listen-long-poll-ms 客户端轮训毫秒数(默认30000)
mars.config.enable-local-cache 是否开启本地缓存默认false
mars.config.local-cache-path 本地缓存路径(默认user.home)
mars.config.enable-error-log 是否开启http轮询访问日志

3、【客户端】spring 需要@EnableMarsConfig注解启动(springboot|springcloud 不需要)

package com.github.fashionbrot.springboot.config;
import com.github.fashionbrot.spring.config.annotation.EnableMarsConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Component
@Configuration
@EnableMarsConfig
public class SpringConfig {
}

4、使用系统配置

(1)、【后端系统】应用环境管理 菜单 创建 应用、环境
(2)、【后端系统】配置管理 菜单 创建配置 点击发布,依赖 mars-spring-config 就会收到服务端修改内容
(3)、【客户端】通过 @MarsValue 获取动态配置的值 如同spring @Value 功能 autoRefreshed 表示是否自动更新当前值
    @MarsValue(value = "${abc}",autoRefreshed = true)
    private String abc;
(4)、【客户端】通过@MarsConfigurationProperties 注解把对应配置映射到 TestConfig 类中
如springboot @ConfigurationProperties 功能相似 @MarsProperty 读取配置key @MarsIgnoreField忽略abc字段配置
import MarsConfigurationProperties;
import MarsIgnoreField;
import MarsProperty;
import lombok.Data;
@Data
//aaa 对应【后端系统】里面的 文件名称
@MarsConfigurationProperties(fileName = "aaa",autoRefreshed = true)
public class TestConfig {
    //修改字段的绑定名称
    @MarsProperty("abc")
    public String name ;
    //忽略字段的绑定
    @MarsIgnoreField
    private String abc;
}
(5)、通过 @MarsConfigListener 监听文件变化,可根据需要使用
    @MarsConfigListener(fileName = "aaa")
    public void marsConfigListenerTest(String context){
        System.out.print(context);
    }
    @MarsConfigListener(fileName = "aaa")
    public void marsConfigListenerProperties(Properties properties){
        System.out.print(properties.toString());
    }

mars 数据库配置系统 介绍

软件架构及软件架构说明如上

安装教程如上

使用说明

1、【客户端】 引入jar 包, 分为spring、springboot|springcloud 各自支持的jar

<!-- spring 引入 -->
<dependency>
    <groupId>com.github.fashionbrot</groupId>
    <artifactId>mars-spring-value</artifactId>
    <version>0.1.0</version>
</dependency>

<!-- springboot or springcloud 引入 -->
<dependency>
    <groupId>com.github.fashionbrot</groupId>
    <artifactId>mars-value-springboot-starter</artifactId>
    <version>0.1.0</version>
</dependency>

2、 【客户端】properties 配置

配置参数 配置说明 是否必填
mars.value.app-id 应用名称 必填
mars.value.env-code 环境code 必填
mars.value.server-address server地址多个逗号分隔 必填
mars.value.listen-long-poll-ms 客户端轮训毫秒数(默认10000)
mars.value.enable-listen-log 轮训日志是否开启

3、【客户端】spring 需要@EnableMarsValue注解启动(springboot|springcloud 不需要)

package com.github.fashionbrot.springboot.config;
import com.github.fashionbrot.value.config.annotation.EnableMarsValue;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Component
@Configuration
@EnableMarsValue
public class SpringConfigValue {
    
}

4、使用系统配置

(1)、【后端系统】应用环境管理 菜单 创建 应用、环境
(2)、【后端系统】模板管理 创建模板(好比创建一个java类)、创建好模板在创建模板属性(如java类的 属性)
(3)、【后端系统】配置数据管理 新建就可以创建一条数据
(4)、【客户端】可配置获取的数据持久化到客户端的Class 类型
//需要继承 MarsTemplateKeyMapping 类实现  initTemplateKeyClass 方法
public class ConfigValueController extends  MarsTemplateKeyMapping{
        
        //系统启动加载方法
        public Map<String,Class> initTemplateKeyClass() {
            Map<String,Class> map=new HashMap<>();
            //test 代表模板key
            //TestModel.class 代表test 模板数据的class 类型
            map.put("test", TestModel.class);
            return map;
        }
}
(5)【客户端】客户端获取 数据2中方式
    @RequestMapping("get")
    @ResponseBody
    public Object test(String templateKey){
        
        //通过 MarsConfigValueCache.getDeepTemplateObject 方式获取, templatekey 是模块key
        //getDeepTemplateObject 方法是深度copy,不会污染上层数据
        List<TestModel> list = MarsConfigValueCache.getDeepTemplateObject(templateKey);
        if (CollectionUtil.isNotEmpty(list)){
            for(TestModel t: list){
                t.setTest(t.getTest()+"你好");
            }
        }
        return list;
    }

    @RequestMapping("get3")
    @ResponseBody
    public List test3(String templateKey){

        //通过 MarsConfigValueCache.getTemplateObject 方式获取, templatekey 是模块key
        //getTemplateObject 浅copy,会污染上层数据
        List list = MarsConfigValueCache.getTemplateObject(templateKey);
        return list;
    }

可通过 mars-test项目中的 springboot-test 参考使用demo

如有问题请通过 mars-issue 提出 告诉我们。我们非常认真地对待错误和缺陷,在产品面前没有不重要的问题。不过在创建错误报告之前,请检查是否存在报告相同问题的issues。

如有问题请联系官方qq群:52842583

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].