当前位置:首页 » 文件管理 » 分布式缓存技术redis

分布式缓存技术redis

发布时间: 2023-01-29 13:27:45

‘壹’ 什么是Redis

redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存和部分文件中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

‘贰’ redis是怎么实现的

第一:Redis 是什么?

Redis是基于内存、可持久化的日志型、Key-Value数据库 高性能存储系统,并提供多种语言的API.

第二:出现背景

  • 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率

  • 性能需求, 随着读操作的量的上升需要解决,经历的过程有:
    数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis

  • 解决写的问题:
    水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在另外一个表;

  • 可靠性需求
    Cache的"雪崩"问题让人纠结
    Cache面临着快速恢复的挑战

  • 开发成本需求
    Cache和DB的一致性维护成本越来越高(先清理DB, 再清理缓存, 不行啊, 太慢了!)
    开发需要跟上不断涌入的产品需求
    硬件成本最贵的就是数据库层面的机器,基本上比前端的机器要贵几倍,主要是IO密集型,很耗硬件;

  • 维护性复杂
    一致性维护成本越来越高;
    BerkeleyDB使用B树,会一直写新的,内部不会有文件重新组织;这样会导致文件越来越大;大的时候需要进行文件归档,归档的操作要定期做;
    这样,就需要有一定的down time;

  • 基于以上考虑, 选择了Redis

    第三:Redis 在新浪微博中的应用

    Redis简介

    1. 支持5种数据结构

    支持strings, hashes, lists, sets, sorted sets
    string是很好的存储方式,用来做计数存储。sets用于建立索引库非常棒;

    2. K-V 存储 vs K-V 缓存

    新浪微博目前使用的98%都是持久化的应用,2%的是缓存,用到了600+服务器
    Redis中持久化的应用和非持久化的方式不会差别很大:
    非持久化的为8-9万tps,那么持久化在7-8万tps左右;
    当使用持久化时,需要考虑到持久化和写性能的配比,也就是要考虑redis使用的内存大小和硬盘写的速率的比例计算;

    3. 社区活跃

    Redis目前有3万多行代码, 代码写的精简,有很多巧妙的实现,作者有技术洁癖
    Redis的社区活跃度很高,这是衡量开源软件质量的重要指标,开源软件的初期一般都没有商业技术服务支持,如果没有活跃社区做支撑,一旦发生问题都无处求救;

    Redis基本原理

    redis持久化(aof) append online file:
    写log(aof), 到一定程度再和内存合并. 追加再追加, 顺序写磁盘, 对性能影响非常小

    1. 单实例单进程

    Redis使用的是单进程,所以在配置时,一个实例只会用到一个CPU;
    在配置时,如果需要让CPU使用率最大化,可以配置Redis实例数对应CPU数, Redis实例数对应端口数(8核Cpu, 8个实例, 8个端口), 以提高并发:
    单机测试时, 单条数据在200字节, 测试的结果为8~9万tps;

    2. Replication

    过程: 数据写到master–>master存储到slave的rdb中–>slave加载rdb到内存。
    存储点(save point): 当网络中断了, 连上之后, 继续传.
    Master-slave下第一次同步是全传,后面是增量同步;、

    3. 数据一致性

    长期运行后多个结点之间存在不一致的可能性;
    开发两个工具程序:
    1.对于数据量大的数据,会周期性的全量检查;
    2.实时的检查增量数据,是否具有一致性;

    对于主库未及时同步从库导致的不一致,称之为延时问题;
    对于一致性要求不是那么严格的场景,我们只需要要保证最终一致性即可;
    对于延时问题,需要根据业务场景特点分析,从应用层面增加策略来解决这个问题;
    例如:
    1.新注册的用户,必须先查询主库;
    2.注册成功之后,需要等待3s之后跳转,后台此时就是在做数据同步。

    第四:分布式缓存的架构设计

    1.架构设计

    由于redis是单点,项目中需要使用,必须自己实现分布式。基本架构图如下所示:

    2.分布式实现

    通过key做一致性哈希,实现key对应redis结点的分布。

    一致性哈希的实现:

    lhash值计算:通过支持MD5与MurmurHash两种计算方式,默认是采用MurmurHash,高效的hash计算.

    l一致性的实现:通过java的TreeMap来模拟环状结构,实现均匀分布

    3.client的选择

    对于jedis修改的主要是分区模块的修改,使其支持了跟据BufferKey进行分区,跟据不同的redis结点信息,可以初始化不同的 ShardInfo,同时也修改了JedisPool的底层实现,使其连接pool池支持跟据key,value的构造方法,跟据不同 ShardInfos,创建不同的jedis连接客户端,达到分区的效果,供应用层调用

    4.模块的说明

    l脏数据处理模块,处理失败执行的缓存操作。

    l屏蔽监控模块,对于jedis操作的异常监控,当某结点出现异常可控制redis结点的切除等操作。

    整个分布式模块通过hornetq,来切除异常redis结点。对于新结点的增加,也可以通过reload方法实现增加。(此模块对于新增结点也可以很方便实现)

    对于以上分布式架构的实现满足了项目的需求。另外使用中对于一些比较重要用途的缓存数据可以单独设置一些redis结点,设定特定的优先级。另外对 于缓存接口的设计,也可以跟据需求,实现基本接口与一些特殊逻辑接口。对于cas相关操作,以及一些事物操作可以通过其watch机制来实现。

    声明:所有博客服务于分布式框架,作为框架的技术支持及说明,框架面向企业,是大型互联网分布式企业架构,后期会介绍linux上部署高可用集群项目。

‘叁’ 常用的缓存技术

第一章 常用的缓存技术
1、常见的两种缓存

本地缓存:不需要序列化,速度快,缓存的数量与大小受限于本机内存
分布式缓存:需要序列化,速度相较于本地缓存较慢,但是理论上缓存的数量与大小无限(因为缓存机器可以不断扩展)
2、本地缓存

Google guava cache:当下最好用的本地缓存
Ehcache:spring默认集成的一个缓存,以spring cache的底层缓存实现类形式去操作缓存的话,非常方便,但是欠缺灵活,如果想要灵活使用,还是要单独使用Ehcache
Oscache:最经典简单的页面缓存
3、分布式缓存

memcached:分布式缓存的标配
Redis:新一代的分布式缓存,有替代memcached的趋势
3.1、memcached

经典的一致性hash算法
基于slab的内存模型有效防止内存碎片的产生(但同时也需要估计好启动参数,否则会浪费很多的内存)
集群中机器之间互不通信(相较于Jboss cache等集群中机器之间的相互通信的缓存,速度更快<--因为少了同步更新缓存的开销,且更适合于大型分布式系统中使用)
使用方便(这一点是相较于Redis在构建客户端的时候而言的,尽管redis的使用也不困难)
很专一(专做缓存,这一点也是相较于Redis而言的)
3.2、Redis

可以存储复杂的数据结构(5种)
strings-->即简单的key-value,就是memcached可以存储的唯一的一种形式,接下来的四种是memcached不能直接存储的四种格式(当然理论上可以先将下面的一些数据结构中的东西封装成对象,然后存入memcached,但是不推荐将大对象存入memcached,因为memcached的单一value的最大存储为1M,可能即使采用了压缩算法也不够,即使够,可能存取的效率也不高,而redis的value最大为1G)
hashs-->看做hashTable
lists-->看做LinkedList
sets-->看做hashSet,事实上底层是一个hashTable
sorted sets-->底层是一个skipList
有两种方式可以对缓存数据进行持久化
RDB
AOF
事件调度
发布订阅等
4、集成缓存

专指spring cache,spring cache自己继承了ehcache作为了缓存的实现类,我们也可以使用guava cache、memcached、redis自己来实现spring cache的底层。当然,spring cache可以根据实现类来将缓存存在本地还是存在远程机器上。

5、页面缓存

在使用jsp的时候,我们会将一些复杂的页面使用Oscache进行页面缓存,使用非常简单,就是几个标签的事儿;但是,现在一般的企业,前台都会使用velocity、freemaker这两种模板引擎,本身速度就已经很快了,页面缓存使用的也就很少了。

总结:

在实际生产中,我们通常会使用guava cache做本地缓存+redis做分布式缓存+spring cache就集成缓存(底层使用redis来实现)的形式
guava cache使用在更快的获取缓存数据,同时缓存的数据量并不大的情况
spring cache集成缓存是为了简单便捷的去使用缓存(以注解的方式即可),使用redis做其实现类是为了可以存更多的数据在机器上
redis缓存单独使用是为了弥补spring cache集成缓存的不灵活
就我个人而言,如果需要使用分布式缓存,那么首先redis是必选的,因为在实际开发中,我们会缓存各种各样的数据类型,在使用了redis的同时,memcached就完全可以舍弃了,但是现在还有很多公司在同时使用memcached和redis两种缓存。

‘肆’ 细说分布式redis

IT培训>数据库教程
细说分布式Redis架构设计和踩过的那些坑

作者:课课家教育2015-12-14 10:15:25

摘要:本文章主要分成五个步骤内容讲解
Redis、RedisCluster和Codis;
我们更爱一致性;
Codis在生产环境中的使用的经验和坑们;
对于分布式数据库和分布式架构的一些看法;
Q & A环节。
Codis是一个分布式Redis解决方案,与官方的纯P2P的模式不同,Codis采用的是Proxy-based的方案。今天我们介绍一下Codis及下一个大版本RebornDB的设计,同时会介绍一些Codis在实际应用场景中的tips。最后抛砖引玉,会介绍一下我对分布式存储的一些观点和看法,望各位首席们雅正。

细说分布式Redis架构设计和踩过的那些坑_redis 分布式_ redis 分布式锁_分布式缓存redis
一、 Redis,RedisCluster和Codis
Redis:想必大家的架构中,Redis已经是一个必不可少的部件,丰富的数据结构和超高的性能以及简单的协议,让Redis能够很好的作为数据库的上游缓存层。但是我们会比较担心Redis的单点问题,单点Redis容量大小总受限于内存,在业务对性能要求比较高的情况下,理想情况下我们希望所有的数据都能在内存里面,不要打到数据库上,所以很自然的就会寻求其他方案。 比如,SSD将内存换成了磁盘,以换取更大的容量。更自然的想法是将Redis变成一个可以水平扩展的分布式缓存服务,在Codis之前,业界只有Twemproxy,但是Twemproxy本身是一个静态的分布式Redis方案,进行扩容/缩容时候对运维要求非常高,而且很难做到平滑的扩缩容。Codis的目标其实就是尽量兼容Twemproxy的基础上,加上数据迁移的功能以实现扩容和缩容,最终替换Twemproxy。从豌豆荚最后上线的结果来看,最后完全替换了Twem,大概2T左右的内存集群。
Redis Cluster :与Codis同期发布正式版的官方cl

‘伍’ Redis是什么,用来做什么

Redis是一个nosql数据库,可以存储key-value值。因为其底层实现中,数据读写是基于内存,速度非常快,所以常用于缓存;进而因其为独立部署的中间件,常用于分布式缓存的实现方案。

常用场景有:缓存、秒杀控制、分布式锁。

虽然其是基于内存读写,但底层也有持久化机制;同时具备集群模式;不用担心其可用性。

关于Redis的使用,可以参考《Redis的使用方法、常见应用场景》

‘陆’ Redis分布式缓存搭建

花了两天时间整理了之前记录的Redis单体与哨兵模式的搭建与使用,又补齐了集群模式的使用和搭建经验,并对集群的一些个原理做了理解。

笔者安装中遇到的一些问题:

如果make报错,可能是没装gcc或者gcc++编辑器,安装之 yum -y install gcc gcc-c++ kernel-devel ,有可能还是提示一些个c文件编译不过,gcc -v查看下版本,如果不到5.3那么升级一下gcc:

在 /etc/profile 追加一行 source /opt/rh/devtoolset-9/enable

scl enable devtoolset-9 bash

重新make clean, make

这回编译通过了,提示让你最好make test一下/

执行make test ,如果提示 You need tcl 8.5 or newer in order to run the Redis test

那就升级tcl, yum install tcl

重新make test,如果还有error就删了目录,重新tar包解压重新make , make test

o/ All tests passed without errors! ,表示编译成功。

然后make install即可。

直接运行命令: ./redis-server /usr/redis-6.0.3/redis.conf &

redis.conf 配置文件里 bind 0.0.0.0 设置外部访问, requirepass xxxx 设置密码

redis高可用方案有两种:

常用搭建方案为1主1从或1主2从+3哨兵监控主节点, 以及3主3从6节点集群。

(1)sentinel哨兵

/usr/redis-6.0.3/src/redis-sentinel /usr/redis-6.0.3/sentinel2.conf &

sentinel2.conf配置:

坑1:master节点也会在故障转移后成为从节点,也需要配置masterauth

当kill master进程之后,经过sentinel选举,slave成为了新的master,再次启动原master,提示如下错误:

原因是此时的master再次启动已经是slave了,需要向现在的新master输入密码,所以需要在master.conf
中配置:

坑2:哨兵配置文件要暴露客户端可以访问到的master地址

在 sentinel.conf 配置文件的 sentinel monitor mymaster 122.xx.xxx.xxx 6379 2 中,配置该哨兵对应的master名字、master地址和端口,以及达到多少个哨兵选举通过认为master挂掉。其中master地址要站在redis访问者(也就是客户端)的角度、配置访问者能访问的地址,例如sentinel与master在一台服务器(122.xx.xxx.xxx)上,那么相对sentinel其master在本机也就是127.0.0.1上,这样 sentinel monitor mymaster 127.0.0.1 6379 2 逻辑上没有问题,但是如果另外服务器上的springboot通过lettuce访问这个redis哨兵,则得到的master地址为127.0.0.1,也就是springboot所在服务器本机,这显然就有问题了。

附springboot2.1 redis哨兵配置:

坑3:要注意配置文件.conf会被哨兵修改

redis-cli -h localhost -p 26379 ,可以登到sentinel上用info命令查看一下哨兵的信息。

曾经遇到过这样一个问题,大致的信息如下

slaves莫名其妙多了一个,master的地址也明明改了真实对外的地址,这里又变成127.0.0.1 !
最后,把5个redis进程都停掉,逐个检查配置文件,发现redis的配置文件在主从哨兵模式会被修改,master的配置文件最后边莫名其妙多了一行replicaof 127.0.0.1 7001, 怀疑应该是之前配置错误的时候(见坑2)被哨兵动态加上去的! 总之,实践中一定要多注意配置文件的变化。

(2)集群

当数据量大到一定程度,比如几十上百G,哨兵模式不够用了需要做水平拆分,早些年是使用codis,twemproxy这些第三方中间件来做分片的,即 客户端 -> 中间件 -> Redis server 这样的模式,中间件使用一致性Hash算法来确定key在哪个分片上。后来Redis官方提供了方案,大家就都采用官方的Redis Cluster方案了。

Redis Cluster从逻辑上分16384个hash slot,分片算法是 CRC16(key) mod 16384 得到key应该对应哪个slot,据此判断这个slot属于哪个节点。

每个节点可以设置1或多个从节点,常用的是3主节点3从节点的方案。

reshard,重新分片,可以指定从哪几个节点移动一些hash槽到另一个节点去。重新分片的过程对客户端透明,不影响线上业务。

搭建Redis cluster

redis.conf文件关键的几个配置:

启动6个集群节点

[root@VM_0_11_centos redis-6.0.3]# ps -ef|grep redis
root 5508 1 0 21:25 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7001 [cluster]
root 6903 1 0 21:32 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7002 [cluster]
root 6939 1 0 21:33 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7003 [cluster]
root 6966 1 0 21:33 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7004 [cluster]
root 6993 1 0 21:33 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7005 [cluster]
root 7015 1 0 21:33 ? 00:00:00 /usr/redis-6.0.3/src/redis-server 0.0.0.0:7006 [cluster]

这时候这6个节点还是独立的,要把他们配置成集群:

说明: -a xxxx 是因为笔者在redis.conf中配置了requirepass xxxx密码,然后 --cluster-replicas 1 中的1表示每个master节点有1个从节点。

上述命令执行完以后会有一个询问: Can I set the above configuration? yes同意自动做好的分片即可。

最后 All 16384 slots covered. 表示集群中16384个slot中的每一个都有至少有1个master节点在处理,集群启动成功。

查看集群状态:

坑1:暴露给客户端的节点地址不对

使用lettuce连接发现连不上,查看日志 Connection refused: no further information: /127.0.0.1:7002 ,跟之前哨兵配置文件sentinel.conf里边配置master地址犯的错误一样,集群启动的时候带的地址应该是提供给客户端访问的地址。

我们要重建集群:先把6个redis进程停掉,然后删除 nodes-7001.conf 这些节点配置文件,删除持久化文件 mp.rdb 、 appendonly.aof ,重新启动6个进程,在重新建立集群:

然后,还是连不上,这次报错 connection timed out: /172.xx.0.xx:7004 ,发现连到企鹅云服务器的内网地址上了!

解决办法,修改每个节点的redis.conf配置文件,找到如下说明:

所以增加配置:

然后再重新构建集群,停进程、改配置、删除节点文件和持久化文件、启动进程、配置集群。。。再来一套(累死了)

重新使用Lettuce测试,这次终于连上了!

坑2:Lettuce客户端在master节点故障时没有自动切换到从节点

name这个key在7002上,kill这个进程模拟master下线,然后Lettuce一直重连。我们期望的是应该能自动切换到其slave 7006上去,如下图:

重新启动7002进程,

7006已成为新master,7002成为它的slave,然后Lettuce也能连接上了。
解决办法,修改Lettuce的配置:

笔者用的是springboot 2.1 spring-boot-starter-data-redis 默认的Lettuce客户端,当使用Redis cluster集群模式时,需要配置一下 RedisConnectionFactory 开启自适应刷新来做故障转移时的自动切换从节点进行连接。

重新测试:停掉master 7006,这次Lettuce可以正常切换连到7002slave上去了。(仍然会不断的在日志里报连接错误,因为需要一直尝试重连7006,但因为有7002从节点顶上了、所以应用是可以正常使用的)

Redis不保证数据的强一致性

Redis并不保证数据的强一致性,也就是取CAP定理中的AP

关于一致性Hash算法,可以参考 一致性Hash算法 - (jianshu.com)

Redis cluster使用的是hash slot算法,跟一致性Hash算法不太一样,固定16384个hash槽,然后计算key落在哪个slot里边(计算key的CRC16值再对16384取模),key找的是slot而不是节点,而slot与节点的对应关系可以通过reshard改变并通过gossip协议扩散到集群中的每一个节点、进而可以为客户端获知,这样key的节点寻址就跟具体的节点个数没关系了。也同样解决了普通hash取模算法当节点个数发生变化时,大量key对应的寻址都发生改动导致缓存失效的问题。

比如集群增加了1个节点,这时候如果不做任何操作,那么新增加的这个节点上是没有slot的,所有slot都在原来的节点上且对应关系不变、所以没有因为节点个数变动而缓存失效,当reshard一部分slot到新节点后,客户端获取到新迁移的这部分slot与新节点的对应关系、寻址到新节点,而没迁移的slot仍然寻址到原来的节点。

关于热迁移,猜想,内部应该是先做复制迁移,等迁移完了,再切换slot与节点的对应关系,复制没有完成之前仍按照原来的slot与节点对应关系去原节点访问。复制结束之后,再删除原节点上已经迁移的slot所对应的key。

与哨兵模式比较类似,当1个节点发现某个master节点故障了、会对这个故障节点进行pfail主观宕机,然后会通过gossip协议通知到集群中的其他节点、其他节点也执行判断pfail并gossip扩散广播这一过程,当超过半数节点pfail时那么故障节点就是fail客观宕机。接下来所有的master节点会在故障节点的从节点中选出一个新的主节点,此时所有的master节点中超过半数的都投票选举了故障节点的某个从节点,那么这个从节点当选新的master节点。

所有节点都持有元数据,节点之间通过gossip这种二进制协议进行通信、发送自己的元数据信息给其他节点、故障检测、集群配置更新、故障转移授权等等。

这种去中心化的分布式节点之间内部协调,包括故障识别、故障转移、选主等等,核心在于gossip扩散协议,能够支撑这样的广播协议在于所有的节点都持有一份完整的集群元数据,即所有的节点都知悉当前集群全局的情况。

Redis高可用方案 - (jianshu.com)

面试题:Redis 集群模式的工作原理能说一下么 - 云+社区 - 腾讯云 (tencent.com)

深度图解Redis Cluster原理 - detectiveHLH - 博客园 (cnblogs.com)

Redis学习笔记之集群重启和遇到的坑-阿里云开发者社区 (aliyun.com)

云服务器Redis集群部署及客户端通过公网IP连接问题

‘柒’ redis到底是个什么东西

1. 什么是Redis

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

2. Redis特点

Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。

Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。

Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。

3. Redis应用场景,它能做什么

众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。

拿大型网站来举个例子,比如a网站首页一天有100万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。上面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

总之,Redis的应用是非常广泛的,而且极有价值,真是服务器中的一件利器,所以从现在开始,我们就来一步步学好它。

‘捌’ JeeSpringCloud-互联网云快速开发框架

(一款免费开源的JAVA互联网云快速开发平台)微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。

演示版地址:http://bknfdnl.hn3.mofasui.cn/admin/login

一、平台简介

在线文档:https://gitee.com/JeeHuangBingGui/jeeSpringCloud/wikis

视频和文档下载:https://gitee.com/JeeHuangBingGui/jeeSpringCloud/attach_files

开源中国地址:https://www.oschina.net/p/jeeSpringCloud

文档视频下载:https://gitee.com/JeeHuangBingGui/jeeSpringCloud/attach_files

JeeSpringCloudV3.0-互联网云快速开发框架模块包含定时任务调度、服务器监控、平台监控、异常邮件监控、服务器Down机邮件监控、平台设置、开发平台、邮件监控、图表监控、地图监控、单点登录、Redis分布式高速缓存、

ActiveMQ队列、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装视频、教程文档、bbo、springCloud、SpringBoot、mybatis、springmvc、IOC、AOP、定时任务、切面缓存、MVC、事务管理。

RedisMQ队列、代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js)、工作流、模块化

代码生成前端控件包括单行文本、富文本、下拉选项、复选框、日期选择、文件上传选择、树选择控件、单选按钮、多行文本….。

二、平台功能

用户管理:用户是系统操作者,该功能主要完成系统用户配置。

部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。

岗位管理:配置系统用户所属担任职务。

菜单管理:配置系统菜单,操作权限,按钮权限标识等。

角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

字典管理:对系统中经常使用的一些较为固定的数据进行维护。

参数管理:对系统动态配置常用参数。

通知公告:系统通知公告信息发布维护。

操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

登录日志:系统登录日志记录查询包含登录异常。

在线用户:当前系统中活跃用户状态监控。

定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。

代码生成:前后端代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js) ,并生成菜单和权限直接使用。

系统接口:根据业务代码自动生成相关的api接口文档。

连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

在线接口文档:使用swager生成在线文档。

ActiveMQ队列:提供ActiveMQ队列,处理批量发送大数据量邮件、大数据量日志文件。

工作流:功能包括在线办公、我的任务、审批测试、流程管理、模型管理。

CMS:功能包括内容管理、内容管理、统计分析、栏目设置、首页。

bbo:代码生成直接生成bbo对接代码。

服务器Down机邮件监控:通过定时任务监控服务器是否Down机,并发送通知邮件。

服务器监控:通过 sigar 进行服务器图形化监控。

异常邮件监控:全局拦截系统异常,并发送通知邮件。

单点登录:使用shior和Redis、共享session方式实现单点登录。

Redis分布式高速缓存:代码生成直接生成Redis对接代码。

三、系统截图

JeeSpringCloudV3.0-互联网云快速开发框架(后台)

四、平台特性

JeeSpringCloud基于SpringBoot+SpringMVC+Mybatis+Redis+SpringCloud+Vue.js微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块。成为大众认同、大众参与、成就大众、大众分享的开发平台。JeeSpring官方qq群(328910546)。代码生成前端界面、底层代码(spring mvc、mybatis、Spring boot、Spring Cloud、微服务的生成)、安全框架、视图框架、服务端验证、任务调度、持久层框架、数据库连接池、缓存框架、日志管理、IM等核心技术。努力用心为大中小型企业打造全方位J2EE企业级平台ORM/Redis/Service仓库开发解决方案。一个RepositoryService仓库就直接实现bbo、微服务、基础服务器对接接口和实现。

努力用心为大中小型企业打造全方位J2EE企业级平台开发解决方案。

Spring Boot/Spring cloud微服务是利用云平台开发企业应用程序的最新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到最佳利用。

微服务/集群(nignx) 支持REST风格远程调用(HTTP + JSON/XML):基于非常成熟的Spring Boot框架,在Spring Boot Spring Cloud中实现了REST风格(HTTP + JSON/XML)的远程调用,以显着简化企业内部的跨语言交互,同时显着简化企业对外的Open API、无线API甚至AJAX服务端等等的开发。

事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST调用也达到了比较高的性能,在基准测试下,HTTP + JSON默认的RPC协议(即TCP + Hessian2二进制序列化)之间只有1.5倍左右的差距,详见下文的基准测试报告。

ORM/Redis/Service仓库

RepositoryORM仓库,提供ORM接口和多种实现,可进行配置实现。

RepositoryRedis仓库,提供Redis接口和多种实现,可进行配置实现。可以配置调用单机、redis、云redis对接。

RepositoryService仓库,提供Service接口和多种实现,可进行配置实现。一个RepositoryService仓库就直接实现bbo、微服务、基础服务器对接接口和实现。

五、架构说明

技术选型

六、代码生成器

代码生成器

七、开发入门

平台教程:https://gitee.com/JeeHuangBingGui/jeeSpringCloud/attach_files

官方提供:

1、详细部署文档。

2、部署视频。

3、中级培训视频待定,包括代码生成、架构代码介绍。

4、高级培训视频待定,包括架构代码详解。

5、架构培训视频待定,包括架构详解、代码生成详解。

平台教程:https://gitee.com/JeeHuangBingGui/jeeSpringCloud/attach_files

八、在线体验

演示版地址:http://bknfdnl.hn3.mofasui.cn/admin/login

热点内容
地铁逃生怎么进入游戏安卓 发布:2024-05-03 17:49:35 浏览:992
aws云存储 发布:2024-05-03 17:48:50 浏览:954
安卓微信王者号怎么转成苹果 发布:2024-05-03 17:44:38 浏览:745
原子类源码 发布:2024-05-03 17:44:19 浏览:165
安卓浏览图片如何全屏 发布:2024-05-03 17:24:08 浏览:104
传奇仓库脚本 发布:2024-05-03 17:23:56 浏览:541
2010数据库技术及应用 发布:2024-05-03 17:21:51 浏览:921
小米账号密码忘了怎么 发布:2024-05-03 17:17:44 浏览:780
皇家农场脚本 发布:2024-05-03 16:46:41 浏览:458
顺序存储链式存储 发布:2024-05-03 16:46:41 浏览:879