HDFS、TFS、FastDFS 、mooseFS、Lustre和mogileFS。
hdfs: Hadoop分布式文件系统(Hadoop Distributed File System)
跨语言RPC框架:
hessian(Binary),thrift,REST,protostuff, ice, httpInvoker, Burlap
(XML-RPC), Axis (SOAP)
RMI,socket,rpc,hessian,http,jms
json smart > Fastjson > Jackson(spring mvc) > Gson > Json-lib。
msgpack,protocal buffer,Kryo
Memcached(dbcached), Redis, MongoDB
各种nosql数据库的比较Cassandra
(facebook),MongoDB,CouchDB,Redis,Riak,HBase
MQ:MetaQ, httpsqs, memcacheq, Activemq, RabbitMQ, UCMQ
starling , amazonsqs , tokyocabinet ,kestrel
Java NIO(框架:Mina、Netty、Grizzly灰熊,yanf4j)
juc, guava(瓜哇)
前端:yoeman,grunt
分布式SOA框架:zookeeper,dubbo, hive(蜜蜂),pig, hadoop(大象)
日志收集:flume、scribe、 flume+kafka+storm
监控系统:
Ganglia(RRDtool)、Nagios、Cacti
zabbix,ZoneMinder,MRTG,Tsar,HawtIO,Countly,Rmamona,Ziplin,Ganglia-
activemq
Thread,ThreadLocal
openAPI
YY: 们除了java框架,我们用的比较多的是nginx redis tfs hadoop,数据库
基本mysql
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程
调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。
hessian<pb <yu kryo
JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技
术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准
的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。
JMS和MQ的关系:
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程
中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(
MOM)的最终实现,是真正的服务提供者;MQ的实现可以基于JMS,也可以基于
其他规范或标准。
支持JMS的开源MQ:
目前选择的最多的是ActiveMQ。
activeMQ 是一个jms 的实现, apache 出的.
protocol buffer:一种序列化协议
jsonsmart json格式中的绝对王者 速度快,信息少
msgpack 二进制序列化的怪杰,号称比protocal buffer快四倍,比json快10
倍
protocal buffer GOOGLE出品,号称比XML快百倍
json是一种数据格式,便于数据传输、存储、交换
gson是一种组件库,可以把java对象数据转换成json数据格式
序列化: 将java对象转为JSON字符串
反序列化:将Json字符串转化为java对象
Memcached, Redis, MongoDB区别:
mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数
据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached
不存在谁替换谁的问题。
和memcached更为接近的是redis。它们都是内存型数据库,数据保存在内存中
,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功
能不强,一般用作缓存。在我们团队的项目中,一开始用的是memcached,后
来用redis替代。
相比memcached:
1、redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上。
2、redis具备binlog功能,可以将所有操作写入日志,当redis出现故障,可
依照binlog进行数据恢复。
3、redis支持virtual memory,可以限定内存使用大小,当数据超过阈值,则
通过类似LRU的算法把内存中的最不常用数据保存到硬盘的页面文件中。
4、redis原生支持的数据类型更多,使用的想象空间更大。
5、前面有位朋友所提及的一致性哈希,用在redis的sharding中,一般是在负
载非常高需要水平扩展时使用。我们还没有用到这方面的功能,一般的项目,
单机足够支撑并发了。redis 3.0将推出cluster,功能更加强大。
6、redis更多优点,请移步官方网站查询。
7. 性能
Redis作者的说法是平均到单个核上的性能,在单条数据不大的情况下Redis更
好。为什么这么说呢,理由就是Redis是单线程运行的。
因为是单线程运行,所以和Memcached的多线程相比,整体性能肯定会偏低。
因为是单线程运行,所以IO是串行化的,网络IO和内存IO,因此当单条数据太
大时,由于需要等待一个命令的所有IO完成才能进行后续的命令,所以性能会
受影响。
原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。
"原子操作(atomic operation)是不需要synchronized",这是Java多线程编程
的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作
一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另
一个线程)。
compareAndSet这个方法多见于并发控制中,简称CAS(Compare And Swap),意
思是如果valueOffset位置包含的值与expect值相同,则更新valueOffset位置
的值为update,并返回true,否则不更新,返回false。
这里可以举个例子来说明compareAndSet的作用,如支持并发的计数器,在进
行计数的时候,首先读取当前的值,假设值为a,对当前值 + 1得到b,但是+1
操作完以后,并不能直接修改原值为b,因为在进行+1操作的过程中,可能会
有其它线程已经对原值进行了修改,所以在更新之前需要判断原值是不是等于
a,如果不等于a,说明有其它线程修改了,需要重新读取原值进行操作,如果
等于a,说明在+1的操作过程中,没有其它线程来修改值,我们就可以放心的
更新原值了。
138 2893 0131
互联网开发
猜你喜欢
转载自sunwtrain.iteye.com/blog/2153704
今日推荐
周排行