Redis

为什么像王者荣耀这样的游戏 Server 不愿意使用微服务?

≯℡__Kan透↙ 提交于 2020-08-18 19:25:54
来源: zhihu.com/question/359630395/answer/954452799 背景介绍: hongjic93 是这样回答的: brice 是这样回答到: 今天在知乎上看到这样一个问题:"为什么游戏公司的server不愿意微服务化?" 背景介绍: “ 笔者最近去面试了家游戏公司。 最近面试了一家游戏公司(满大间的,有上市) 我问他,公司有没有做微服务架构的打算及考量? 他很惊讶的说,我没听说过微服务耶,你可以解释一下吗? 我大概说了,方便测试,方便维护,方便升级,服务之间松耦合,可多语言开发,自动扩容…之类的点 然后他说游戏server不太需要微服务,因为要求real time,做微服务会影响效能,分模组来开发就好了 我也不确定,但微服务不是趋势吗?特别是大公司,游戏server的服务应该很容易拆分吧? hongjic93 是这样回答的: 比如moba类游戏/王者荣耀/LOL,就看王者荣耀的客户端吧,想象一下。 账号系统,符文系统,英雄系统,皮肤系统,好友系统,好友之间messaging,这些都是常规操作,如果流量足够大,当然可以用微服务的架构去做。 不过这不是这个游戏的核心,核心是MOBA:Multiplayer online battle arena。特性是什么? 10个人之间各种游戏事件的高速多向通讯 streaming/broadcast

RedisConfig.java--开启缓存支持,配置RedisTemplate,缓存到java虚拟机而非Redis,redis支持缓存过期时间,redis指定缓存超时时间

只谈情不闲聊 提交于 2020-08-18 17:39:57
@Configuration @EnableCaching //开启缓存支持 public class RedisConfig extends CachingConfigurerSupport{ @Resource private LettuceConnectionFactory lettuceConnectionFactory; //@description 自定义的缓存key的生成策略,若想使用这个key 只需要将注解上keyGenerator的值设置为keyGenerator即可 @Override @Bean public KeyGenerator keyGenerator(){ return new KeyGenetator(){ @Override public Object generate(Object target,Method method,Object... params){ StringBuffer sb = new StringBuffer(); sb.append(target.getClass().getName()); sb.append(method.getName()); for(Object obj: params){ sb.append(obj.toString()); } return sb.toString(); } }; } /

ELK环境搭建及client配置

时光总嘲笑我的痴心妄想 提交于 2020-08-18 14:40:03
官网下载:logstash、kibana、elas; 在server端: 安装logstash:rpm包方式,最新版本 /etc/logstash/conf.d/下,创建个配置文件,用来收集client端的日志信息: #vim server.conf input { #配置输入信息及方式; redis { port => "6379" host => "10.6.22.75" data_type => "list" key => "logstash-redis" type => "redis-input" } } output { #配置数据信息收集并输出到elasticsearch elasticsearch { hosts => "10.6.22.75" index => "logstash-%{+YYYY.MM.dd}" } } 安装elas: tar.gz包格式,解压出来到任意目录后,到config下面,编辑配置文件 elasticsearch.yml ,修改如下信息: path.logs: /data/log/ path.data: /data/el_data/ http.port: 9200 network.host: 10.6.22.75 如果是单节点就如上配置,多节点就需要配置集群模式; 到bin目录下,编辑启动文件 elasticsearch

秒杀系统,防超卖以及高性能下单

寵の児 提交于 2020-08-18 12:00:00
秒杀抢购系统的成功平稳运行,有一些需要注意的知识点。 1 高并发,以及刷接口等黑客请求对服务端的负载冲击 2 高并发时带来的超卖,即商品数量的控制 3 高负载下,下单的速度和成功率的保证 4 其他 以秒杀单品为例,如抢小米手机。 解决方案探讨: 第一步 限制前端发来的请求量 譬如定在了周二10点开启抢购,那么在之前的一周时间内,都会有预约通知,或者普通的用户浏览。通过预约量、浏览量等数据分析,大概能预估到在周二会参与“点击抢购按钮”的人数。譬如有500万。 此时,我们是知道实际商品数量的,譬如20万。 那么我是没有必要让这500万个请求都到后台的,我最多最多放200万个请求到后台。其他的300万直接就在前端网页看单机动画就好了。 这一步做起来很简单,20万个商品,我提前生成200万个token,在用户点击预约、或者浏览该商品时,就按规则发放出去。(规则可以是譬如公平模式,某个用户id已经预约多次了,还没抢到,那么给他token。也可以就是随机发放,5天的预热时间,每天发4万个就好) 前端接收到是否能参与秒杀的反馈后,就保存在浏览器本地就好,当秒杀开始时,没得到token的用户,就只好在本地看单机动画,过几秒告诉他商品不足就好了。 那些幸运的得到了token的用户,就有了给后台发请求参加秒杀的机会了,此时还需要前端(APP客户端)来对请求进行控制,因为用户喜欢反复点击

修改项目配置信息

泪湿孤枕 提交于 2020-08-18 11:45:32
修改项目Redis配置 文件目录: src/main/resources/application.properties 项目: mailserver 修改IP地址为Linux主机地址:192.168.163.129 redis端口号:6379 密码:redis默认无密码,若要设置密码,则修改redis配置文件 redis.conf 中的 requirepass password (若设置密码,则集群密码必须一致) 来源: oschina 链接: https://my.oschina.net/u/4406404/blog/4503494

在Centos8中安装Redis

时光怂恿深爱的人放手 提交于 2020-08-18 11:41:04
①首先,去官网下载安装包: 1.直接访问官网: https://links.jianshu.com/go?to=http%3A%2F%2Fdownload.redis.io%2Freleases%2Fredis-3.0.0.tar.gz 2.在Linux上运行命令: wget http://download.redis.io/releases/redis- 5.0.4.tar.gz 其中版本会改变 。 3.下载好安装包后传输到Linux中 注意:若想通过Xshell工具向Linux传输文件,Linux上必须先安装RZ # yum install lrzsz -y ②解压 redis # tar -xvf redis-5.0.5.tar.gz ③安装 gcc 环境 1 )redis是由C语言编写的,其运行需要C语言环境 # yum install gcc-c++ 2) make 是 gcc 的编译器, VPS 买来必定要安装 # yum -y install gcc automake autoconf libtool make ④编译 进入解压后的redis的目录执行 # make ⑤安装 编译完成后,进入src目录安装 # make install 来源: oschina 链接: https://my.oschina.net/u/4261110/blog/4503485

修改项目配置信息

断了今生、忘了曾经 提交于 2020-08-18 11:40:30
修改项目Redis配置 文件目录: src/main/resources/application.properties 项目: mailserver 修改IP地址为Linux主机地址:192.168.163.129 redis端口号:6379 密码:redis默认无密码,若要设置密码,则修改redis配置文件 redis.conf 中的 requirepass password (若设置密码,则集群密码必须一致) 来源: oschina 链接: https://my.oschina.net/u/4312354/blog/4503487

阿里的秒杀系统是怎么设计的?

社会主义新天地 提交于 2020-08-18 11:39:59
点赞再看,养成习惯,微信搜一搜【 三太子敖丙 】关注这个互联网苟且偷生的工具人。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 背景 我之前写过一个秒杀系统的文章不过有些许瑕疵,所以我准备在之前的基础上进行二次创作,不过让我决心二创秒杀系统的原因是我最近面试了很多读者,动不动就是秒杀系统把我整蒙蔽了,我懵的主要是秒杀系统的细节大家都不知道,甚至不知道电商公司一个秒杀系统的组成部分。 我之前在某电商公司就是做电商活动的,所以这样的场景和很多解决方案我是比较清楚的,那我就从我自身去带着大家看看一个秒杀的设计细节以及中间各种解决方案的利弊,以下就是我设计的秒杀系统,几乎涵盖了市面上所有秒杀的实现细节: 正文 首先设计一个系统之前,我们需要先确认我们的业务场景是怎么样子的,我就 带着大家一起假设一个场景 好吧。 我们现场要卖1000件下面这个 婴儿纸尿裤 ,然后我们根据以往这样秒杀活动的数据经验来看,目测来抢这100件纸尿裤的人足足有10万人。(南极人打钱!) 你一听,完了呀,这我们的服务器哪里顶得住啊!说真的直接打DB肯定挂,但是别急嘛,有 暖男 敖丙在,任何系统我们开始设计之前我们都应该去思考 会出现哪些问题 ?这里我罗列了几个非常经典的问题: 问题 高并发: 是的 高并发

个人视频汇总

杀马特。学长 韩版系。学妹 提交于 2020-08-18 09:10:46
个人视频汇总 1、2020年深入浅出prometheus+grafana 企业监控应用 https://edu.51cto.com/sd/d075b 2、2020年深入浅出zabbix5.0 企业应用实战 https://edu.51cto.com/sd/8f88b 3、2020年Jumpserver堡垒机版本1.5.8企业落地实践 https://edu.51cto.com/sd/84158 4、2020年Redis5.0 从入门到企业应用实战视频教程 https://edu.51cto.com/sd/aa00f 5、2020年MongoDB 企业应用实战 基础 复制集 分片集群 https://edu.51cto.com/sd/1766d 6、2020年MySQL5.7系列实战课程--主从复制篇 https://edu.51cto.com/sd/c5e81 7、2020年MySQL5.7系列实战课程--高可用MHA与读写分离Atlas应用实战 https://edu.51cto.com/sd/f7955 来源: oschina 链接: https://my.oschina.net/u/4339343/blog/4365164

为什么 Redis 单线程能达到百万+QPS?

拟墨画扇 提交于 2020-08-18 08:50:11
作者:在江湖中coding https://juejin.im/post/5e6097846fb9a07c9f3fe744 性能测试报告 查看了下阿里 Redis 的性能测试报告如下,能够达到数十万、百万级别的 QPS (暂时忽略阿里对 Redis 所做的优化),我们从 Redis 的设计和实现来分析一下 Redis 是怎么做的。 Redis的设计与实现 其实 Redis 主要是通过三个方面来满足这样高效吞吐量的性能需求 高效的数据结构 多路复用 IO 模型 事件机制 1、高效的数据结构 Redis 支持的几种高效的数据结构 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合) 以上几种对外暴露的数据结构它们的底层编码方式都是做了不同的优化的,不细说了,不是本文重点。 2、多路复用 IO 模型 假设某一时刻与 Redis 服务器建立了 1 万个长连接,对于阻塞式 IO 的做法就是,对每一条连接都建立一个线程来处理,那么就需要 1万个线程,同时根据我们的经验对于 IO 密集型的操作我们一般设置,线程数 = 2 * CPU 数量 + 1,对于 CPU 密集型的操作一般设置线程 = CPU 数量 + 1。 当然各种书籍或者网上也有一个详细的计算公式可以算出更加合适准确的线程数量,但是得到的结果往往是一个比较小的值,像阻塞式 IO