创建NamesrvController
我这里都是截取的部分代码,梳理大概逻辑,具体细节部分需要大家自行去阅读源码
NamesrvStartup12345public static NamesrvController main0(String[] args) { try { NamesrvController controller = createNamesrvController(args); start(controller); }
12345public static NamesrvController start(final NamesrvController controller) throws Exception { boolean initResult = controller.initialize(); controller.start(); return controller;}
1234567public void start() throws Ex ...
单机最多10万并发 阿里开发
集群部署架构图
原理
高可用主从架构及多副本策略
Borker有主和副之分,master broker 主要负责写入
master borker 收到消息之后会同步给slave broker ,保证一个机器宕机之后,另一个机器有数据
slave broker固定时间会从master broker拉取数据,这就是所谓的主从同步
每个broker启动都要向所有的nameserver进行注册。
因为如果只是向个别nameserver进行注册的话,当一台nameserver宕机之后,就会丢失broker的信息
nameserver和borker之间有个心跳机制,保证当broker宕机之后,nameserver会及时感知到
每隔固定时间,broker会向nameserver发送心跳,nameserver会将这个最新心跳时间更新
nameserver每隔固定时间来扫描所有broker的心跳时间,如果超过一个数据,将认为这个broker宕机
心跳传输的时候,还会降
消息获取来源消息获取可能来自于master broker,也可能来自于slave broker
...
单机基本配置
12345678910111213141516171819202122232425#将redis目录下面utils中的redis_init_script复制到/etc/init.d/目录下,并且改为为redis_端口号cp redis_init_script /etc/init.d/redis_6379mkdir /etc/redis #存放redis的配置文件mkdir /var/redis/6379 #存放redis的持久化文件修改redis.conf拷贝到/etc/redis/6379.conf中#修改redis.conf中的配置环境为生产环境daemonize yes # 让redis以后台方式启动pidfile /var/run/redis_6379.pid #设置redis的pid文件位置port 6379 #设置redis的监听端口号dir /var/redis/6379 #设置持 ...
基本流程
上图就是mysql的基本流程
连接器账号密码输入之后即可登录
连接的方式分为两种:
长连接:连接成功后,如果客户端持续有请求,则一直使用同一连接,
短连接:指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个
建立连接的过程通常是比较复杂的,所以我建议你在使用中要尽量减少建立连接的动作,也就是尽量使用长连接
但是全部使用长连接后,你可能会发现,有些时候 MySQL 占用内存涨得特别快,这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。
怎么解决这个问题呢?你可以考虑以下两种方案。
定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。
如果你用的是 MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection 来重新初始化连接资源。这个过程不需要重连和重新做权限验证,但是会将连接恢复 ...
经典的缓存架构
可以支持百万流量的三级缓存
cache aside pattern
读数据的时候,先读缓存,缓存没有的话,就读数据库,放入缓存,返回响应
写数据的时候,先删除缓存,再更新数据库
为什么是删除缓存,而不是更新缓存那?
原因很简单,试想这么场景,数据频繁的被修改,那么缓存就也要不断的重新计算,这个计算是非常消耗资源的,而且你更新了这么多次缓存还不一定能用到,就有点得不偿失了,所以就有了先删除缓存,再更新数据的做法,这样就是减少了非常多次的缓存重新计算的工作量,而是用到了数据的时候,再从数据库中加载到缓存中
数据库和缓存双写问题初级先写数据库,后写缓存,如果写缓存失败,就会出现数据库和缓存不一致的情况
解决方案:很简单,写数据的时候,先删除缓存,再更新数据库就可以了
其实就是从两个操作失败的场景来分析就会明白了
删除缓存失败,那么就会再次执行删除缓存的操作,可以自定义重试几次,删除换缓存失败的情况,缓存和数据库数据一直,删除缓存成功,会以数据库数据为主,将相应数据写入数据库,等到再次请求缓存,用到这个数据的时候,再将数据放入到缓存中
更新数据库失败,更新数据库失 ...
简单介绍使用
具体步骤
从这个地址下载centos7
https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
cmd,运行以下命令
1234#CentOs7是自定义的名字#E:/config/centos-7.0-x86_64.box是下载到本地的地址vagrant box add CentOs7 E:/config/centos-7.0-x86_64.box
运行以下命令
12#CentOs7是上面自定义的名字vagrant init CentOs7
注意:如果你之间已经执行过vagrant init这个命令,会报错,需要把相应的文件删除即可,一般文件会在你操作的目录下,我的是C:\Users\lenovo,删除这个Vagrantfile,再次执行vagrant init CentOs7即可
至此,已经安装成功,直接vagrant up启动即可
打开xshell输入相应信息
123127.0.0.1root vagran ...
集群配置
12345678910111213141516mkdir -p /etc/redis-clustermkdir -p /var/log/redismkdir -p /var/redis/7001#配置文件目录/var/redis/7001.conf#redis.confport 7001cluster-enabled yescluster-conifg-file /etc/redis-cluster/node/7001.confcluster-node-timeout 15000daemonize yespidfile /var/run/redis_7001.confdir /var/redis/7001logfile /var/log/redis/7001.logbind 192.168.0.21appendonly yes
至少要3个master节点启动,每个master加一个slave节点,先选择6个节点,启动6个实例
12345678910111213141516171819yum install -y rubyyum install -y rubygemsge ...
由来
其实我年初的时候就已经开启了一个博客,但是由于我在原来的那个电脑上胡乱折腾,导致用不了了,一度很伤心,当时就想着说有一天等我换电脑了,就重新运作起我的博客,这不一换电脑就立马折腾起来了。
对于博客,不知道为什么自己有一种执念,虽然目前市面上的博客平台很多,比如博客园、掘进等等,但是我还是想要有自己的博客,我仔细想了想自己到底是为什么对拥有一个自己的博客这么有执念那?结果就是想要在网络平台上有一块自己的小地方,它也许不需要很大的流量,也不会有很多人关注,但它可能是我心里的那一道光,一个记录我自己成长的地方。
写文章的原因一方面是由于加入的技术群很多人都在写年终总结,另一方面也是自己觉得确实应该写一篇文章来记录一下这一年,记录这无法忽视的疫情,记录这已经逝去的校园美好时光
疫情 犹记得就在上一年的12月份学校放假回家过年了,那时谁能预想到竟然会有一场席卷全球的风暴来了,竟然会在家连续待了几个月,都不带出门的,当然我也庆幸自己12月份回家了,否则学校放假迟一点,就赶上疫情爆发,就回不去家了。 回顾我这2020年,由于疫情,在家连续待了几个月,考研也没有考上,于是自学java几个月,使用java做了一个毕设,然后就开始找工作了。 当时,都说2020年是最难的一年,都说这一年是很难找工作的,我考虑到自己的情况和自己又想转型做java,非常焦虑,害怕自己找不到工作,害怕毕业了还是要留在家里靠父母养活,感觉那样有点丢人。于是就开始我的找工作之旅,当时稚嫩的自己找了差不多一周吧,投了很多份简历在各种求职平台上,但是都没有什么回复,于是我就慌了,然后没几天之后,终于接到了一个电话,简单聊了几句之后,就可以去了,由于害怕自己找不到工作,于是就接受了这份工作,虽然不是做java开发的。这份工作很神奇 ...