说明 ruby 学起来容易,用起来容易!
Python 有干爹 Google。你看 Go。
再一个 Python 语法简单,比较适合教学。
web 开发,瓶颈在 IO。
用的是这个 https://dev.mysql.com/doc/refman/8.0/en/mysql-real-connect.html 方法
楼主再验证下吧。
话说,走内网,tcp 和 http 应该区别不大吧?
有考虑过找 Java 然后转 Ruby 吗?
CAP 是说,裂了是保证可用性,还是一致性。
裂了就裂了,不会管数据库在做什么。。。问题是裂了的时候,数据库做什么。。。要么不工作,要么工作,数据是错的。。。
“一段时间内会读取不到新数据”这个就是保证可用性。
PingCAP”这种方法牺牲了一定的可用性(在脑裂时部分客户端的可用性)换取了一致性的保证“,这个保证的是一致性。
额,我是好奇,脑裂的情况下,你们是咋处理的。
这个账号是你们团队的运营账号吧。。。在哪个帖子回复不是一样的。。。
请教几个问题
CAP 是 C 还 A?
在就是求介介绍介绍锁相关或者是如何保证一致性的。
大佬,不搞一搞吗?
请教两个问题,
换成容器后,会不会 long_schedule 的警告会多一些?需要处理吗?
scheduler count 要调整吗?
IO 线程数的设置应该按照怎样的标准设置
要靠 benchmark,主要要保证主线程一直在跑着。主线程如果比较闲,就加点。IO 线程消耗内存,太高了,不知道会不会爆。
再就是要看看极端情况 redis 的表现。
如果有慢 client 拖慢了整个读写过程怎么办?(主线程在阻塞)
感觉是这里面 http://antirez.com/news/126 说的 slow command。要能提供 command 执行一版,切换出去的能力,要有锁,应该还要有 transaction。是否多线程,倒不是必须的。
谢谢两位大佬
我记得 Metabase 是执行 sql,然后有些定时任务啥的。
有调研过 ror 技术栈有做类似的事情吗?
之后会考虑再整理下。
A 和 B 的 n 是自己算的。保证两点就可以,递增并全局唯一。
一个简单的算法,就是在创建提议者的时候给他们一个 id 号,比如 1、2、3。然后 n 从 1 开始并把 id 当做小数部分。
比如 1.001,下一个 n 就是 2.001,以此类推。
代码实现 https://github.com/yfractal/concurrency-lab/blob/master/paxos/src/paxos_proposer.erl#L154
假设 A 给的是 1.001,B 给的是 1.002,那么认为 B 的大。
https://github.com/yfractal/concurrency-lab/blob/master/paxos/src/paxos_acceptor.erl#L70
@zzz6519003 加了 erlang 的实现 https://ruby-china.org/topics/38909。之后会考虑加图片的
不是 uniq key,用了 limit,会漏数据。
虽然觉得对我没什么用,还是谢谢。
求代码,伪代码也行。
ror,不会内存溢出,因为每次拿 1000 个,就是上面的代码。
直接遍历,是每个都查一次 sql?数据量大一点,会很慢。
我误以为 spirngboot 和 ror 一样是个全家桶。。。
既然说 orm,我们就把问题放在 orm 里讨论。
现在的问题是:遍历一样表,考虑到内存,需要分批次获取。
方便给代码吗?随便哪种 orm 的都可以,伪代码也行。
我知道 java 可以这么写(这种方法不是最好的,想知道更好的方法)
@Query("SELECT * FROM users WHERE id >= :startId"
+ " and ORDER BY id ASC LIMIT :limit")
List<User> getBatch(@Param("limit") long limit,
@Param("startId") long startId);
public List<User> getBatch(@NonNull Long limit, @NonNull Long startId) {
List<User> users = this.dbRepository.getBatch(limit, startId);
return users.stream().collect(Collectors.toList());
}
要遍历所有的,外面还要有一个循环。。。
RoR 里面,这么写
User.find_each do |user|
end
一样的功能,一次拿 1000 条,我忘了可不可以设置 1000 这个值了,但这个值一般没必要改。
比如数据库里有 users 表,提供这样一个 API,一次可以拿 1000 个。 多次调用 API 后,可以拿到所有的 users。
求具体说一说。
比如 批量获取
,用 SpringBoot 除了手撸以外,有没有更好的办法?
就是拼字符串方便,dehug 方便。所以用啊。
拼接字符串方便,好 debug。
启动 java 项目的时候,我总是在想,到底要不要传环境变量,这个环境是 dev 呢,还是 development 呢?schema 在哪呢,要怎么跑呢?
我写了小 100 行的 Java 代码,搞了一个批量获取的 API,RoR/Grape 10 行可以搞定吧?
Clojure 呢,语言本身不支持 debug。。。先完成什么,都靠干撸,都撸秃噜皮了,一手老茧。
有测试、开发环境的还好,很多都是没有的。。。
目录结构,完全看项目搭建者高兴。debug 都是从头 debug 到尾。
http 长连,ror 并发应该上不来。可以考虑一单独启动一个新版 rails 服务做长连。旧服务只负责写。这要把 actioncable 写相关的代码引进来、然后两个服务连一个 redis 就行。
我一开始看公开课,其实是为学英语,学着学着就跑偏了…最后英语没学好(也就计算机方面的还凑合),却成了程序员。
最近事情太多 ,有时间的时候会考虑搞。
大佬说的对
推荐几门公开课:
入门 CS50,基础 CS61A,算法 CS61B,这些在网上都可以找到,除了视频,还有课后作业(project)。
工程方面,推荐 CS169,前几年一直是用 RoR 讲的。
网络、操作系统这些,只在大学里学过,没上过公开课。都是根据具体问题学的。不过不只看一本书,而且也不仅仅是看书。
美国的课程,有几部分,上课讲、讲义、课后项目、助教辅助。教材一般会推荐几本,讲到具体的内容,会推荐相应的章节去看。老师的态度也是,你爱看不看,把问题搞清楚了就好。这样的话,就会发现,一门课程下来,一本书都没完全读完,但又多了好多书。有些书,其实是参考资料,当 wiki 用就好。
还真想不出来要推荐什么书,不过 算法导论 不推荐,很多人能背出算法的 i,j,k,但却说不出算法思路。算法推荐 算法引论。
推荐 CS61A 的课堂笔记。
再就推荐 设计数据密集型应用。很成体系,适合自学。
好的书和课程,不是面面俱到,而是要画好一个骨架,然后可以根据这个骨架,去添加血肉。
有直播吗?