L***s 发帖数: 1148 | 1 多谢指点,豁然开朗!我还是没有系统设计经验,思维局限在单机。
有备份机memcache的话,可以对每个手机终端(IMEI)缓存ssthresh和cwnd,
理论上重启、TCP握手后,貌似server可以恢复到断之前的congestion windows size。
但client端TCP貌似还是要slow start?除非hack TCP协议。 |
|
|
d*******r 发帖数: 3299 | 3 有人用过 Hazelcast 吗? ( https://github.com/hazelcast/hazelcast )
看着很适合做 real time system. 我觉得可以理解为 JVM 版本的, 带 Cluster 模式
的 Redis.
比 memcached 功能强,
比 Redis,有 Cluster 功能,
我在网上跟他们 marketing guys 瞎扯了一会儿,他们说,现在有 4000+ companies
在 production 中使用了。比如 Apple, Cisco ,Ericsson, Hsbc, Morgan Stanley,
American express, AT&T
比如,Apple store 就有 600 多个 nodes 在跑 Hazelcast.
Hazelcast 支持的数据结构,比如分布式map, queue,用起来很简单的样子:
http://www.hazelcast.org/getting-started
Spring 的作者 Rod Johnson 也加入了 Hazelcast:
http://www.hazelcast... 阅读全帖 |
|
b*******s 发帖数: 5216 | 4 【 以下文字转载自 Java 讨论区 】
发信人: zcsrs (wfo), 信区: Java
标 题: 分享下多年积累的对JAVA程序员成长之路的总结zt
发信站: BBS 未名空间站 (Thu Mar 13 02:10:26 2014, 美东)
我也搞了几年JAVA了,由于一向懒惰,没有成为大牛,只是一普通程序猿,不爱玩社交
网站,不爱玩微博,唯独喜欢百度贴吧,潜水很久了,手痒来给新人分享下从新手成长
为老鸟的已见,也刷刷存在感,应该不比曝照差吧。
首先初识语法的阶段,必须要学会怎么操作对象,操作if和for,操作list set map,
然后是线程、IO和jdbc什么的,其余的,若是一时不理解,可以后边需要时再学。
这阶段完了,你可以写些能在控制台打印出来的小程序,锻炼下逻辑思维。也就是号称
JAVASE毕业了,其实不过是入门而已,如果要往WEB方向发展,这些倒是基本足够了。
接下来要学HTML JSP SERVLET 数据库 JAVASCRIPT TOMCAT,目标,写出第一个动态网
站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的
是,一个用户... 阅读全帖 |
|
M*****n 发帖数: 2301 | 5 这要具体看了,你要做什么,你公司是做什么的,sqlite在很多地方
还是用的挺多的。
学习system internal和学如何使用是完全不同的,如果是前者的话,
可以用来学习的open source project很多。这班上不是天天讨论NoSQL么,
redis就是不错的学习起点,memcached也不错,不算太复杂,
如果懂Erlang,CouchDB和Riak也不错,其他的可能对初学者来说也许太复杂了点。 |
|
c******o 发帖数: 1277 | 6 两者没啥强弱,不同用途和风格而已。
都可以scale很好。只是dynamodb等于是把麻烦的devops外包了,花钱买方便。
dynamodb是key value,模式类似于 redis/memcache |
|
|
|
N*****m 发帖数: 42603 | 9 memcached是先出来的,所以我说redis是跟它竞争的 |
|
D*****r 发帖数: 6791 | 10 我没说是因为我不知道这些,也没有具体的设计,只要做出来就好。直接用memcache了。
接有 |
|
M*****R 发帖数: 650 | 11 I am no Daniu, but I just finished transitioning from C++/C#/Windows
Platform to Java/Open Source Platform in last couple of years. There are a
few things I think that helped me a lot
- The two books: Core Java Volume I, Java Concurrency in Practice
- Read about dependency injection, from Spring to Guice
- Re-read a few design patterns
- Learn to use Java inner class and template pattern
- Read about JVM
- Don't focus too much on performance and memory management when coding
- Don't try to use l... 阅读全帖 |
|
g*****g 发帖数: 34805 | 12 你要重现检视的是ORM这个词。O是躲不掉的,只要你用R,M就躲不掉。区别只在于
mapping是怎么实现的。ORM架构的主要目的是帮助你减少boiler plate代码,简化开发
。另一方面手写越多,灵活度越高,这是没有争议的。Spring jdbc也好,hibernate,
小轮子大轮子的区别,没有好坏的差异,区别在于使用的人。这两者本来就不是互斥的
,你大可以混合使用。JPA对于简单的关系很方便,Spring Data更是把这个做到了极致
,把缺省的CRUD都给你做了。当关系很复杂,比如你join了N个table还要group by的时
候,觉得spring jdbc template更方便很正常。
另一方面,当你觉得JPA不好用的时候,往往需要重新审视你的数据。最常见的原因是
因为速度的需要,为了减少join,大量denormalize。这是传统的做法,但不是唯一的
解决方案,往往不是最好的解决方案。如果纯粹为了减少join,可以考虑Elastic
Search,把整个object扔进去,而且搜索更强大。如果是表太大,不能忍受JPA产生的
query不是最优,也许Cassandr... 阅读全帖 |
|
w**z 发帖数: 8232 | 13 一个网站可能比你想象的要复杂得多,有很多layer,就我接触到的就有 Apache,nginx
, MySQL, mq, memcached, Java services, real time chatting, Cassandra,
hadoop,
wordpress, photo
storage(mogilefs, s3), backup storage, 还有许多intergration point, 收钱的几
十个vendor,
Facebook, Twitter,发email ,SMS 等等。 每个layer都要HA, 有问题要及时察觉。
确实相当复杂。10million user, 300-500台机器很正常。
实node |
|
s**********k 发帖数: 88 | 14 我感觉Facebook出的东西远没有Google等的solid.Facebook喜欢在别人的轮子上稍微改
吧改吧就丢出来。
像RocksDB是从google的LevelDB改了点东西丢出来的,很多小bug,甚至编译都要出问
题。
Thrift是从PB得到启发搞出来的。
把Memcached修了修
把jemalloc修了修
...... |
|
g*****g 发帖数: 34805 | 15 The right way is to use an external caching server like Memcached or Redis,
and you keep your cache there.
That being said, the simpliest way on top of your current architecture is to
set up a REST or JMX or RMI call to invalidate cache on other nodes when
data is
updated
. And you can statically configure your nodes to know all other nodes in the
cluster.
send |
|
l**********n 发帖数: 8443 | 16 redis is more sophisticated. redis supports persistence and transaction. |
|
|
|
l**********n 发帖数: 8443 | 19 Here are a few examples of concrete usage of Redis on top of MongoDB.
Pre-2.2 MongoDB does not have yet an expiration mechanism. Capped
collections cannot really be used to implement a real TTL. Redis has a TTL-
based expiration mechanism, making it convenient to store volatile data. For
instance, user sessions are commonly stored in Redis, while user data will
be stored and indexed in MongoDB. Note that MongoDB 2.2 has introduced a low
accuracy expiration mechanism at the collection level (to b... 阅读全帖 |
|
d*******r 发帖数: 3299 | 20 你在生产中用上 Redis Cluster 了吗? 我看它还是 "working in progress" 状态...
的
redis。 |
|
p*****2 发帖数: 21240 | 21
For
will
low
easy
所以redis做了一大堆不该做的事情。 |
|
|
d*******r 发帖数: 3299 | 23 二爷你不是 Redis 粉吗,这个黑的,展开说说 |
|
p*****2 发帖数: 21240 | 24
redis定位有问题,做了很多东西都做的不好,该做的确没做。 |
|
d*******r 发帖数: 3299 | 25 我觉得 Redis 独特的用途是 all in memory ,
C* 和 Kafka 都是直接写到硬盘里的吧,做 low latency app (e.g. online gaming)
应该不这么搞吧。 |
|
|
d*******r 发帖数: 3299 | 27 我感兴趣的是 message queue in memory for low latency app |
|
d*******r 发帖数: 3299 | 28 C* 当 message queue 不合适吧,
而且我不知道有人大规模这么用吗, 我是说 best practice 里,大家有用 C* 当
memoryDB 用?
我在看 ES,ES 里存的 index 也可以放到 memory 里,就是不知道 best practice 是
不是能这么用. |
|
p*****2 发帖数: 21240 | 29
redis不能scale
为什么不用akka? |
|
p*****2 发帖数: 21240 | 30
zeromq如何?storm最早用的这个。不然就用AKKA? |
|
|
p*****2 发帖数: 21240 | 32
最有用的就是这个
0.1 MUST NOT follow advice blindly |
|
c******o 发帖数: 1277 | 33 web framework 最好不要cross server stateful, open a can of worms,所以LB足够。
缓存交给memcache/redis
persistence交给sql/nosql
cluster management交给zoo keeper
一个原则是cache最好靠近source of truth
如果实在需要简单的cluster, 我用的最好是akka (spary/play都是用的它) |
|
g*****g 发帖数: 34805 | 34 这是错的,大型应用通常尽量避免sticky session,因为会带来大量load balancing的
问题。你可以用cookie来存信息,或者使用distributed session store,如memcached
。这样可以保持应用stateless,在scalability上很重要。 |
|
h**********c 发帖数: 4120 | 35 虫老这个贴子是值一千万美刀的
我老良心发现来这问问,cut in五百万
想必有的组,死都不知道死在什么上。
还想吃java 饭,连基本的文档都不看.
memcached |
|
z*******3 发帖数: 13709 | 36 很多时候没办法啊
你看以前dumbcoder就在问那个redis的cluster version
估计就打算解决这个问题,session管理总是一个头疼的问题
能做到stateless固然好,但是很多时候是木有办法呀
memcached |
|
z*******3 发帖数: 13709 | 37 这就是为啥我觉得vert.x比较好用的原因
嘿嘿
memcached |
|
g*****g 发帖数: 34805 | 38 如果是那样,最简单的策略就是SHA256把所有substring hash,然后用标准的Redis/
Memcached就行了。 |
|
g*****g 发帖数: 34805 | 39 你关于model的说法没有错,一般叫做data transfer object. 至于 caching跟MVC没有
什么关系。如果单机可以用
ehcache. cluster可以用独立的redis或者 memcached. cache都是 LRU,资源使用是可
控的。 |
|
f*******t 发帖数: 7549 | 40 1.row key是byte[],不管你里面想写什么,最终都要转成它。
2.可以,scan.setStartRow(),scan.setStopRow()
3.hbase以及所有BigTable衍生数据库性能最差的操作是random get,二分查找一个
keyvalue复杂度是O(logN)。数据大了hbase的block cache效率还是不够高。实际应用
中请尽量多使用scan,避免random get,实在不行可能得上memcache和其它优化。另外
hbase会对邻近的数据编码以节省存储空间,random get在读取每个keyvalue的时候都
要解码整个block,性能损失很大。
4和5是同一个问题。每个client的htable.multiput会把不同region的数据分开提交给
对应的服务器。这样如果有多个client,各服务器的负载更平均,对hbase cluster的
整体性能肯定有帮助。
6.你想问的是分成很多个小段的scan吗?scan的时候server会对每个client生成
scanner object,读取的时候互相之间可能有lock contenti... 阅读全帖 |
|
|
w**z 发帖数: 8232 | 42 you are right. 我觉得他在问persistent store, 所以没提memcache. |
|
|
z***e 发帖数: 5393 | 44 检查了一下数据库,的确是。
本来是该存memcache/redis之类的,好像在哪里看到有人说用mongodb就没必要用redis
之类的做缓存,就去掉了那一层,想不到造成这种结果。。。 |
|
|
w***g 发帖数: 5958 | 46 召唤版上的AWS高手出招。我过年那阵做了个网站,当时看过一眼AWS,结果还是自己配
了台机器放data center了。机器成本$2000的样子,hosting每个月$50。如果是1U的服
务器的话是每个月$20。eBay上随便几百块钱买的二手服务器都比AWS的强。4T硬盘一个
差不多是$150的样子,台式机可以挂6个。1U的机器配好了可以挂5个,一个内置四个热
插拔。看到你在为40G硬盘满了而头疼我实在感到无语。
我的意见是,如果你只是硬盘满了,没有别的performance问题,花钱升级硬盘是最省
钱的办法。mongoDB有它的问题,主要是吞吐量没法scale。那也要等机器数量>4时才会
体现出来。C*, redis, memcache啥的都有他们各自的问题。mongoDB虽然不济,至少丢
失数据的可能性是最小的。如果因为非预料之中的问题临时改变架构,引入redis啥的,
我觉得风险会比较大,以后维护也难。就是改一两行代码,测试不到位都会导致服务中
断。如果实在缺钱,像上面说的,可以卖一点股份。一点点钱招人肯定不够,买
hosting应该绰绰有余了。
replication
4k |
|
w********m 发帖数: 1137 | 47 读是瓶颈的话,加memcached。
写是瓶颈的话,加新的性能好的数据库,夜深人静的时候dump进legacy里面。 |
|
g*****g 发帖数: 34805 | 48 Sure, you can write to Redis/Memcache during a session and commit to DB on
logout/session expiration. You'll avoid most read loads on the DB and batch
the writes. On the down side, you'll lose some transaction characteristics.
So it may or may not work depending on the application requirement.
DB? |
|
g*****g 发帖数: 34805 | 49 Restful service is typically stateless but not sessionless, unless it's not
exposed to edge and it doesn't need authentication/authorization. In the
latter case, it's OK to only secure the edge service. Session can also be
moved to Memcache/Redis/C*. |
|
S***w 发帖数: 1014 | 50 我对GFS, Haystack理解是,
把小文件合并起来存在大文件里,比如
GFS的block是64MB,
Haystack的block是1TB
GFS有master, Haystack也有相应的Directory当作master
在读的时候,
1. 用户用文件名访问master
2. master服务器告诉文件存储在哪个chunk noder / store
我的问题时,
怎么 2 时怎么实现的呢?
如果用key => value, key是文件名, value是哪个store
G/F都有PB数据, 能放到内存吗?
如果放不到内存, 从硬盘或者分布式的memcache, latency不能保证吧 |
|