精华内容
下载资源
问答
  • 文章目录1 Redis是什么2 特点(优势)3 redis缓存4 Redis服务器集群5 总结 1 Redis是什么 Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。 Redis 是以key-value形式存储,和传统...

    1 Redis是什么

    Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。 Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 Java中数据结构:String,数组,list,set map… Redis提供了很多的方法,可以用来存取各种数据结构的数据。

    2 特点(优势)

    1.数据保存在内存,存取速度快,并发能力强
    2.它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。
    3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
    4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
    5.Redis支持集群(主从同步、负载均衡)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
    6.支持持久化,可以将数据保存在硬盘的文件中
    7.支持订阅/发布(subscribe/publish)功能 QQ群
    1、数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。
    2、支持Value类型更多。
    3、多种客户端(语言 java php c# js)
    4、支持集群来扩展空间 8G+8G+16G
    5、开源(免费还有很多人维护)

    3 redis缓存

    在互联网应用中经常需要用redis来缓存热点数据

    redis数据在内存,可以保证数据读取的高效,接近每秒数十万次的吞吐量

    减少下层持久层数据库读取压力,像mongodb,每秒近千次读取就已经表示压力山大

    redis单进程单线程运行,天然具备读写的原子性,避免并发导致脏读等问题

    4 Redis服务器集群

    Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)

    Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低 Redis 集群的性能, 并导致不可预测的错误。

    Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。

    Redis 集群提供了以下两个好处:

    将数据自动切分(split)到多个节点的能力。
    当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力

    在这里插入图片描述
    集群即Redis Cluster,集群是有多个节点组成,Redis数据分布在这些节点中。集群的节点分为主节点和从节点,主节点负责读写请求和集群信息的维护,从节点维护主节点的数据和状态信息。

    5 总结

    Redis3.0加入了Redis的集群模式,实现了数据的分布式存储,对数据进行分片,将不同的数据存储在不同的master节点上面,从而解决了海量数据的存储问题。

    Redis集群采用去中心化的思想,没有中心节点的说法,对于客户端来说,整个集群可以看成一个整体,可以连接任意一个节点进行操作,就像操作单一Redis实例一样,不需要任何代理中间件,当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node。

    Redis也内置了高可用机制,支持N个master节点,每个master节点都可以挂载多个slave节点,当master节点挂掉时,集群会提升它的某个slave节点作为新的master节点。

    在这里插入图片描述
    如上图所示,Redis集群可以看成多个主从架构组合起来的,每一个主从架构可以看成一个节点(其中,只有master节点具有处理请求的能力,slave节点主要是用于节点的高可用)

    Redis集群的数据分布算法:哈希槽算法。

    展开全文
  • 非限制性读写读写之间的真正区别是什么?...我觉得不舒服我可能有一个长期存储的缓存集合的问题配置如下:eternal="false" overflowToDisk="false" timeToIdleSeconds="1200"timeToLiveSeconds="1800">class="n...

    非限制性读写和读写之间的真正区别是什么?我可以阅读ehcache和hibernate文档,但是据我所见,他们只会说“如果你做更新,读写会更好”.我觉得不舒服

    我可能有一个长期存储的缓存集合的问题配置如下:

    eternal="false" overflowToDisk="false" timeToIdleSeconds="1200"

    timeToLiveSeconds="1800">

    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"

    properties="replicateAsynchronously=true,replicatePuts=true,replicateUpdates=true,replicateUpdatesViaCopy=false,replicateRemovals=true" />

    当更新集合,在发生更新的节点和其他节点上,究竟发生了什么?这里的非限制性读写和读写有什么区别?一个节点有可能使用其从缓存中过去的10分钟版本吗?

    请注意冗长的超时和异步复制.

    展开全文
  • @(MySQL系类)[mysql集群搭建]mysql集群搭建(读写分离)简介当今MySQL使用相当广泛,随着用户的增多以及数据量的增大,高并发随之而来。然而我们有很多办法可以缓解数据库的压力。分布式数据库、负载均衡、读写分离、...

    @(MySQL系类)[mysql集群搭建]

    mysql集群搭建(读写分离)

    简介

    当今MySQL使用相当广泛,随着用户的增多以及数据量的增大,高并发随之而来。然而我们有很多办法可以缓解数据库的压力。分布式数据库、负载均衡、读写分离、增加缓存服务器等等。这里我们将采用读写分离技术进展缓解数据库的压力。

    其中实现读写分离的技术有很多方法,这里我们将采用mysql-proxy这个中间软件来实现。这个软件中含有一个读写分离的lua文件,这也是我们使用mysql-proxy实现读写分离必用的文件,它需要lua解析器进行解析。因此我们还需要安装一个lua解析器。

    环境准备

    三台Linux虚拟机

    linux版本centos6.5 mysql5.5

    mysql-proxy-0.8.5

    lua-5.1.4

    servicename: node1(写) node2(读) node3(mysql-proxy)

    数据库配置

    主从复制

    一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件为mysql.ini)

    log-bin=mysql-bin 开启二进制日志

    注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。

    node1 为主服务器

    [mysqld]

    log-bin=mysql-bin

    server-id=1

    node2 为从服务器

    [mysqld]

    log-bin=mysql-bin

    server-id=2

    开始构建主从服务器

    第一步:

    在node1上创建一个node2可以登陆的账号

    用户名:mysql2

    密码:mysql2

    msyql > GRANT REPLICATION SLAVE ON *.* TO ‘mysql2’@’node2’ IDENTIFIED BY ‘mysql2’;

    msyql > FLUSH PRIVILEGES;

    第二步:

    查看node1msyql服务器的二进制文件与位置

    msyql > show master status;

    #在file和position中的两个字段

    第三步:

    告知二进制文件名与位置

    在node2中执行:

    mysql>CHANGE MASTER TO

    >MASTER_HOST=’node1’,

    >MASTER_USER=’mysql2’,

    >MASTER_PASSWORD=’mysql2’,

    >MASTER_LOG_FILE=’mysql-bin.000048’,

    >MASTER_LOG_POS=432;

    完成主从配置

    测试主从复制

    在node2中

    mysql > slave start; #开启主从复制

    mysql > show slave status\G #查看主从复制

    在显示的字段中

    Master_Host: node1 #master的ip

    Master_log_File: mysql-bin.000048 #文件位置

    Read_master_log_Pos: 432

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常

    这里可以创建一个测试库看看是否同步过去

    主从复制工作原理

    (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件。binary log events);

    (2) slave将master的binary log events复制到它的中继日志(relay log)。

    (3) slave重做中继日志中的事件,将改变反映它自己的数据。

    主主复制

    实现原理

    主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更。聪明的你也许已经想到该怎么实现了。对,就是将两个主从复制有机合并起来就好了。只不过在配置的时候我们需要注意一些问题,例如,主键重复,server-id不能重复等等。

    配置文件

    node1

    server-id=11 #任意自然数n,只要保证两台MySQL主机不重复就可以了。

    log-bin=mysql-bin #开启二进制日志

    auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n

    auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL

    binlog-ignore=mysql #忽略mysql库【我一般都不写】

    binlog-ignore=information_schema #忽略information_schema库【我一般都不写】

    replicate-do-db=aa #要同步的数据库,默认所有库

    node2

    server-id=12

    log-bin=mysql-bin

    auto_increment_increment=2

    auto_increment_offset=2

    replicate-do-db=aa

    重启

    开始构建主主复制

    因为主主复制是两个主从复制组合一起,所以我就接着上面主从复制接着配置。

    第一步:

    在node2上创建一个node1上可以登陆的用户

    用户:mysql11

    密码:mysql11

    mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql11’@’node1’ IDENTIFIED BY ‘mysql11’;

    mysql>FLUSH PRIVILEGES;

    第二步:

    在node2查看二进制日志名和位置

    mysql>show master status;

    第三步:

    告知二进制文件名与位置

    在node1中执行:

    mysql>CHANGE MASTER TO

    MASTER_HOST=’node2’,

    MASTER_USER=’mysql11’,

    MASTER_PASSWORD=’mysql11’,

    MASTER_LOG_FILE=’mysql-bin.000084’,

    MASTER_LOG_POS=107;

    完成主主复制配置*

    测试主主复制

    分别开启slave start;

    mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功

    注意:

    1、主主复制配置文件中auto_increment_increment和auto_increment_offset只能保证主键不重复,却不能保证主键有序。

    2、当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。

    3、Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

    常见出错:

    1、两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。

    2、已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS。

    3、stop slave后,数据变更,再start slave。出错。

    更正法:重新执行一遍CHANGE MASTER就好了。

    安装lua

    官网下载:http://www.lua.org/download.html

    Lua 是一个小巧的脚本语言。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。

    一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

    1、安装lua需要依赖很多软件包。

    可以通过rpm -qa | grep name检查以下软件是否安装:

    gcc、gcc-c++、autoconf、automake、zlib、libxml、ncurses-devel、libmcrypt、libtool、flex、pkgconfig、libevent、glib*

    若缺少相关的软件包,可通过yum -y install方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh方式安装。(我的话一般是直接在系统光盘软件库中找到直接rpm安装的,有些找不到,则先在网上下载然后在ftp传给linux再进行安装)

    2、依赖软件安装完毕后则进行编译安装lua

    MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua。

    # wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

    # tar zxvf lua-5.1.4.tar.gz

    # cd lua-5.1.4

    # make linux

    # make install

    # export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

    安装mysql-proxy

    1、首先查看linux版本确认是32位还是64为系统

    下载地址:https://downloads.mysql.com/archives/proxy/

    查看linux内核版本

    cat /etc/issue

    查看linux版本

    cat /proc/version

    # tar –zxvf mysql-proxy-0.8.5- linux-rhel5-x86-64bit.tar.gz

    # mkdir /usr/local/mysql-proxy

    # cp ./ mysql-proxy-0.8.5-linux-rhel5-x86-64bit/* /usr/local/mysql-proxy

    # cd /usr/local/mysql-proxy

    mysql读写分离测试

    1、修改rw-splitting.lua文件

    修改默认连接,进行快速测试,不修改的话要达到连接数为4时才启用读写分离

    #cp /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ./

    vim rw-splitting.lua

    --- config

    --

    -- connection pool

    if not proxy.global.config.rwsplit then

    proxy.global.config.rwsplit = {

    min-idle_connections = 1. #默认为4

    max_idle_connections = 1. #默认为8

    is_debug = false

    }

    end

    2、修改完成后,启动mysql-proxy

    # cd /usr/local/mysql/bin

    # ./mysql-proxy --proxy-read-only-backend-addresses=192.168.95.12:3306 --proxy-backend-addresses=192.168.95.11:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &

    参数:

    --proxy-read-only-backend-addresses  #只读服务器地址(ip)

    --proxy-backend-addresses       #服务器地址(主服务器)

    --proxy-lua-script            #lua脚本路劲

    &                     #表示后台执行

    3、创建用于读写分离的数据库连接用户

    用户名:proxy1

    密码:321

    mysql>grant all on *.* to 'proxy1'@'node3' identified by '321';

    mysql>use aa;

    mysql>create table tab1(id int auto_increment,name varchar(32) not null,primary key(id));

    【因为已经开启了主从复制所以,11、12主机mysql中都创建了这个用户】

    可以使用任意ip客户端端登陆这个账号

    在node3登陆:

    # ./mysql -u proxy1 -P4040 -h192.168.95.13 –p

    创建数据库

    use aa

    insert into tab1(name) values("proxy111");

    insert into tab1(name) values("proxy222");

    在两个mysql中查看结果:一致

    结果表明:账号使用

    5、关闭node2 mysql的主从复制

    mysql > stop slave;

    6、证明写分离

    使用proxy1@node3账号打开多个客户端进行插入数据

    打开三个mysql客户端分别插入2条数据:

    mysql> insert into tab1 (name) values('stop_slave11111');

    ….

    mysql> insert into tab1 (name) values('stop_slave6666’);

    查看:

    分别登陆node1 mysql与node2 mysql查看表中的数据

    select * from tab1;

    若node1有数据而node2中没有数据则证明写分离

    7、证明读分离

    使用proxy1@node3账号登陆mysql,查看tab1中的数据

    mysql>use aa;

    mysql>select*from tab1;

    若没有数据刚刚才插入的数据则,证明读分离。

    脚本

    为了方便启动与管理mysql-proxy可以创建mysql-proxy服务管理脚本

    下面这个管理脚本仅适合以上我给出的安装路径位置

    #!/bin/sh

    #

    # mysql-proxy This script starts and stops the mysql-proxy daemon

    #

    # chkconfig: - 78 30

    # processname: mysql-proxy

    # description: mysql-proxy is a proxy daemon to mysql

    # Source function library.

    . /etc/rc.d/init.d/functions

    #PROXY_PATH=/usr/local/bin

    PROXY_PATH=/usr/local/mysql-proxy/bin

    prog="mysql-proxy"

    # Source networking configuration.

    . /etc/sysconfig/network

    # Check that networking is up.

    [ ${NETWORKING} = "no" ] && exit 0

    # Set default mysql-proxy configuration.

    #PROXY_OPTIONS="--daemon"

    PROXY_OPTIONS="--proxy-read-only-backend-addresses=192.168.95.12:3306 --proxy-backend-addresses=192.168.95.11:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua"

    PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid

    # Source mysql-proxy configuration.

    if [ -f /etc/sysconfig/mysql-proxy ]; then

    . /etc/sysconfig/mysql-proxy

    fi

    PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH

    # By default it's all good

    RETVAL=0

    # See how we were called.

    case "$1" in

    start)

    # Start daemon.

    echo -n $"Starting $prog: "

    $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file=$PROXY_PID --user=root --log-level=debug --log-file=/usr/local/mysql-proxy/log/mysql-proxy.log

    RETVAL=$?

    echo

    if [ $RETVAL = 0 ]; then

    touch /var/lock/subsys/mysql-proxy]

    echo "ok"

    fi

    ;;

    stop)

    # Stop daemons.

    echo -n $"Stopping $prog: "

    killproc $prog

    RETVAL=$?

    echo

    if [ $RETVAL = 0 ]; then

    rm -f /var/lock/subsys/mysql-proxy

    rm -f $PROXY_PID

    fi

    ;;

    restart)

    $0 stop

    sleep 3

    $0 start

    ;;

    condrestart)

    [ -e /var/lock/subsys/mysql-proxy ] && $0 restart

    ;;

    status)

    status mysql-proxy

    RETVAL=$?

    ;;

    *)

    echo "Usage: $0 {start|stop|restart|status|condrestart}"

    RETVAL=1

    ;;

    esac

    exit $RETVAL

    #---我将mysql-proxy服务管理脚本放在了/usr/local/mysql-proxy/init.d/文件夹里

    #---给执行权限,建立相应目录

    #chmod +x /usr/local/mysql-proxy/init.d/mysql-proxy

    #mkdir /usr/local/mysql-proxy/run

    #mkdir /usr/local/mysql-proxy/log

    #cd /usr/local/mysql-proxy/init.d/

    #---启动mysql-proxy

    #./mysql-proxy start

    #---停止mysql-proxy

    #./mysql-proxy stop

    #---重启mysql-proxy

    #./mysql-proxy restart

    相关参数:

    PROXY_PATH=/usr/local/mysql-proxy/bin //定义mysql-proxy服务二进制文件路径

    --proxy-read-only-backend-addresses=192.168.95.12:3306 //定义后端只读从服务器地址

    --proxy-backend-addresses=192.168.95.11:3306 //定义后端主服务器地址

    --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua //定义lua读写分离脚本路径

    PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid //定义mysql-proxy PID文件路径

    --daemon //定义以守护进程模式启动

    --keepalive //使进程在异常关闭后能够自动恢复【上面的管理脚本没有加上此参数】

    --user=root //以root用户身份启动服务

    --log-level=debug //定义log日志级别,由高到低分别有(error|warning|info|message|debug)

    --log-file=/usr/local/mysql-proxy/log/mysql-proxy.log //定义log日志文件路径

    展开全文
  • 集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster)。分布式是指将不同的业务分布在...

    0x01.大型网站演化

    简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

    集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster)。

    分布式是指将不同的业务分布在不同的地方;而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。

    之前在网上看到一篇关于大型网站演化的博客。

    每个大型网站都会有不同的架构模式,而架构内容也就是在处理均衡负载,缓存,数据库,文件系统等,只是在不同的环境下,不同的条件下,架构的模型不一样,目的旨在提高网站的性能。

    最初的架构只有应用程序,数据库,文件服务。

    32adb941e3f3f0b46bdbefb40f209192.png

    到后来,分布式服务、集群架设。

    4676b2257a146e84991bb6aa7a479f1f.png

    0x02.关于均衡负载方案

    在上一篇,讨论过过的nginx现实均衡负载方案,这里选择另一种HAProxy+Keepalived双机高可用均衡负载方案。

    HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。

    不论是Haproxy还是Keepalived甚至是上游服务器均提高生产力并增强可用性,也就是如下架构中Haproxy,Keepalived,Httpd服务器任意宕机一台服务还是可以正常运行的。

    HAProxy的优点:

    1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);

    2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;

    3、支持url检测后端的服务器;

    4、本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;

    5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡;

    f4f4fe2de3f9c60ec61b30621154faec.png

    0x03.关于Redis缓存方案

    缓存分为服务器缓存和应用程序缓存。

    关于应用程序内缓存,已经在里面做了模块处理了。

    关于服务器缓存,主要缓存服务器文件,减少服务器和php交互,减少均衡负载服务器和应用程序服务器交互。

    缓存里面有一种典型的memcached,现在用的多的是redis轻量级缓存方案。

    关于memcached与redis,看这篇

    Redis主要将数据存储在各种格式:列表,数组,集合和排序集,一次能接受多个命令,阻塞读写,等待直到另一个进程将数据写入高速缓存。

    640bf4d1845cb9ed6b2ceb6e4eb53575.png

    一篇关于Reids缓存方案。

    0x04.关于搜索引擎Sphinx方案

    (第一期不做,后期需求时候考虑)

    Sphinx是俄罗斯人开发的,号称是很吊啦,千万级数据检索,每秒10MB/s,搭过环境。

    Sphinx和MySQL是基于数据库的全文引擎,创建索引是B+树和hash key-value的方式。

    原理类似于用底层C检索MySQL,然后弄出一个sphinx.conf配置文件,索引与搜索均以这个文件为依据进行,要进行全文检索,首先就要配置好sphinx.conf,告诉sphinx哪些字段需要进行索引,哪些字段需要在where,orderby,groupby中用到。

    0x05.关于NoSQL快速存储方案

    NoSQL在这里的使用价值是处理一些琐事,比如用户个人网站的一些css值,height,width,color等等的小而繁多的数据,采用NoSQL旨在提升数据库速度,减少对MySQL的SELECT请求。

    关于NoSQL的方案很多了,选一个简单的MongDB好了。

    0x06.关于分布式MySQL方案

    (做分布式MySQL还没尝试过,初期也不清楚mysql所需要的压力,所以第一期不打算做分布式MySQL)

    0x07.分布式集群方案

    综合起来,大致就是如下模型,初探分布式架构,很多模块将就形势做调整,时时更新中,待续。。。

    7266cc4468217d083c63e85ec9ca9c32.png

    核心技术:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx1.     项目核心代码结构截图

    70cb48a6ac3f53fdef777f565100a71d.png

    项目模块依赖

    dfb6f49d57bc207cebbca2770e83a36e.png

    特别提醒:开发人员在开发的时候可以将自己的业务REST服务化或者Dubbo服务化

    2.    项目依赖介绍

    2.1 后台管理系统、Rest服务系统、Scheculer定时调度系统依赖如下图:

    65e974a5488f01cd713912d7de08443a.png

    2.2 Dubbo独立服务项目依赖如下图:

    a2f9c78937b26a6d434c81f8f5854a0f.png

    3.  项目功能部分截图:

    2a1c40f33ec5ffc5bb6c4b3cef32df06.png

    8a1b123e424d6e3954e8d2ae9e2fa2c9.png

    31a35603d896c3fae778a0edb2b750c2.png

    44f723948a51dbb005bb5b1c4db50d09.png

    4d09dceefa4588ca47e5dc758fd0142e.png

    a84e24b38de61f07c0e51de12b852858.png

    5088efaafdfd2e7650388e2648b862e6.png

    zookeeper、dubbo服务启动

    06c74ea8eb929294ca5511c6304cd4f3.png

    a345ae2132e84d0e21ad2255b81569ce.png

    dubbo管控台

    b9ff205c4fd224e0d9e00fef4c53c839.png

    5f198a95dfb04f453c5be82b8a8b04d1.png

    feef65447cb26ce1f47cce446f85b61f.png

    feef65447cb26ce1f47cce446f85b61f.png

    eaba10970d371b08f79919c61da6a431.png

    c830b350a73e6856b05d462bb608f63e.png

    5dc3b43510d0cb014c588a74824cccc0.png

    REST服务平台

    d49437d9c49aa243cace7d6c22f5ad38.png

    dfbfe515c7170c348ef54c533dc181b1.png

    276e396128254f72b7941fe756de8ebd.png

    ca72fce5fa1b799550325acaa0dfced7.png

    展开全文
  • Mysql的缓存方案

    2021-10-23 15:08:02
    mysql主从复制 原理图 1. 主库更新事件(update、insert、delete)通过io-thread写到binlog;...读写分离 当我们写完主数据库之后再去读从数据库,读到的数据不一定是最新的数据。 最终..
  • 服务器集群与虚拟化

    2021-08-12 03:26:45
    服务器集群与虚拟化 内容精选换一换开源KVM虚拟化解决方案应用于线下虚拟化场景,包括单机、双机HA和多机集群,通过虚拟机迁移和HA确保业务可靠性,典型应用包括数据库、WEB和缓存服务器等。单机场景分析单机场景是...
  • HBase读写缓存

    2021-03-14 16:39:23
    目录读写缓存BlockCacheLRUBlockCacheSlabCacheBucketCache 读写缓存   HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。  ...
  • 服务器清理内存怎么清理缓存 内容精选换一换本节操作指导您完成Windows操作系统云服务器磁盘空间清理。弹性云服务器匀出一部分磁盘空间来充当内存使用,当内存耗尽时,云服务器可以使用虚拟内存来缓解内存的紧张。但...
  • 小区宽带缓存服务器

    2021-08-13 03:07:34
    小区宽带缓存服务器 内容精选换一换共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点、高并发性、高性能、高可靠性等特点。主要应用于需要支持集群、HA(High Available,指高可用集群...
  • 实现mysql的读写分离: Mycat 可以简单概括为 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个...
  • jetcache二级缓存配置redis集群实战教学1.增加Maven配置:2.配置文件内容:3.启动类4.@CreateCache使用5.@Cached使用 1.增加Maven配置: <!--二级缓存 --> <dependency> <groupId>...
  • 在前面的四篇文章中,我们从数据持久化层来聊了一些架构设计方案,来处理数据量大读写缓慢的问题。但是架构设计并不是只有这一方面的设计思路,本篇开始我们来从缓存层面来一起看看如何设计。 一、业务场景四 在一个...
  • 集群缓存可避免系统瓶颈JBoss Cache顾名思义是利用缓存来提高系统扩展性的,当我们的WEB系统遇到大量的数据库读写时,系统的瓶颈将会出现在数据库端,JBoss Cache正好可以解决数据库的频繁读取问题,解决这个瓶颈。...
  • 转发自:JAVA葵花宝典公众号...三、缓存一致性问题解决方案 1. binlog+消息队列+消费者del cache 2. 从库binlog+消息队列+消费者del cache 3. 更新后key升级 四. 命中率问题 五.缓存穿透/缓存击穿 六.缓存雪崩...
  • 点击上方「蓝字」关注我们概述我们所说的缓存分为进程内部缓存(系统内部缓存)和 缓存服务(如redis/memcache)。计算机服务从原来的单体结构,到多实例,到现在流行的微服务,缓存服务...
  • 服务器运行内存怎么清理缓存 内容精选换一换系统长期运行后,free命令查看系统内存,发现剩余...Buffer cache:主要是当系统块设备进行读写的时候,块进行数据缓存的系统来使用,即块的操当您发现云服务器的...
  • mysql缓存方案

    2021-09-01 21:35:45
    对于mysql而言,在体系结构中是有一个缓存的,但是在实际的项目中,读一般远远大于写,大概有10倍的样子,自己的公司项目是在17倍的样子,默认的mysql内部实现的缓冲不够用,无法满足高并发的需求;所以就产生了一些...
  • 服务出现性能瓶颈时,我们一般有2种方式扩展服务的性能: 1、垂直方向,就是通过升级硬件的配置,如内存出现瓶颈了,就使用更大的内存,CPU出现瓶颈了使用更好的...Redis原生提供了集群方案redis cluster,用于水平
  • 基于Netty实现websocket集群部署实现方案 每天多学一点点~ 话不多说,这就开始吧… 文章目录基于Netty实现websocket集群部署实现方案1.前言2. 整体思路3. 代码demo4. 测试5.结语 1.前言 最近公司在做saas平台,其中...
  • Redis集群 Redis主从复制(读写分离) 主从复制概念 就是建议一台Redis服务器上的数据复制到其他Redis服务器上,使两者数据达到一致,再将第一台服务器作为主服务器(master/主节点),主服务器只负责写操作,将...
  • redis安装 ...https://www.cnblogs.com/wuxl360/p/5920330.html https://blog.csdn.net/qq_42815754/article/details/82912130 redis集群设置密码 https://blog.51cto.com/xiaoxiaozhou/2397217 1、...
  • db和缓存双写不一致 ...直接加redission的普通Rlock分布式锁,比如一个sku的缓存更新都排着队串行操作。这样也行,但是性能损失大。 方案二 Redisson其实还有读写锁. 操作过db的都知道,写锁是互斥的,读
  • redis中的数据做周期性的持久话 AOF则是把每条redis命令作为日志,通过append-only的方式写入日志中,重启redis的时候则通过回放AOF文件来恢复数据。 持久化频率 比如每5分钟...
  • keycloak集群化的思考

    千次阅读 2021-01-13 17:02:51
    单体服务如果想要突破到高并发服务就需要升级为集群服务。同时集群化也为高可用打下了坚实的基础。纵观现在比较流行的服务或者中间件,不管是RabbitMQ还是redis都提供了集群的功能。 作为硬核工业代表的wildfly也不...
  • 缓存分类 静态缓存、分布式缓存、热点本地缓存。 静态缓存通过生成 Velocity 模板或者静态 HTML 文件来实现。部署在Nginx,可以减少对于应用服务器的压力。 分布式缓存典型的就是我们平常用来存储动态数据的redis。...
  • Redis三种集群方案

    2021-02-08 10:01:57
    01.Redis主从架构(读写分离) 现在企业用主从架构的不多了, 搭建过程看这里: https://www.yuque.com/crow/xq7vsx/17705 如果你redis是单击模式的话,假如你客户端访问的话,万一redis挂了没办法重启,那个整个架构就...
  • 为什么现在都说微服务,微服务到底解决了说明问题,一个应用服务是如何进行发展演变的从单机到集群再到现在的微服务 通过该文章,表示我们就要进入分布式专题了,该文章是接下来分布式文章的前置知识 分布式的演变 ...
  • 解决方案: 接口层增加校验,过滤掉参数不合法的请求 可以将查询结果为不存在的key同样保存到缓存中,value为null,并且设置自动过期时间,这种方式可以避免短时间集中的暴力攻击 可以使用布隆过滤器,可以...
  • PostgreSQL HA集群高可用方案介绍 & pgpool-II+PostgreSQL HA方案部署 一、PostgreSQL HA集群高可用方案介绍 二、pgpool-II+PostgreSQL HA方案部署 三、pgpool-II常用命令 一、PostgreSQL HA集群高可用方案...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,066
精华内容 38,826
关键字:

服务集群对缓存的读写方案