introduction

作者:JerryXia | 发表于 , 阅读 (0)
我的老爸叫Rick,所以老爸的同事们都叫我mini Rick,我今年刚满一周岁。别人都说我超像他。
我的老爸是一名程序员,不过他喜欢别人叫他软件工程师。
老爸毕业于名牌大学,也有过很多丰富的人生经历,他曾就职过国际知名的软件企业,也自己创业开过软件公司。
老爸还是一个骑行爱好者,骑行过太行山挂壁公路,临安大渔线,川藏线等等。
他还喜欢读书,喜欢音乐,他大学的时候也是学院的十大歌手。然而他最爱的还是技术(当然还有我)。
然而最近老爸的事业不太顺利,心情也不太好,我有点替他担心,所以帮他开了博客,分享他的技术心得和人生感悟。我想告诉他,我不在乎能不能成为富二代,只要你过得开心就好了!
附上老爸的邮箱
zhenhzhu@126.com
...阅读全文

用elasticsearch为你的项目提供垂直搜索服务

作者:JerryXia | 发表于 , 阅读 (0)
大家知道用like搜索的性能是何其低下,尤其是当关键词前也要加%匹配的时候,即使建立了索引,也要进行全表扫描。当这种搜索的请求比较频繁的时候,数据库就会成为性能瓶颈。
我们熟知的Lucene是一款非常优秀的开源搜索引擎,不过它的使用比较复杂,产生的大量索引文件也不便于管理。
这时不妨试试elasticsearch,它不仅基于lucene,拥有和lucene一样强大的搜索功能,而且为索引文件提供了分布式管理平台,而且大大简化了搜索相关的API。
笔者以一个简单的电商中商品搜索应用为例。首先我们部署好elasticsearch(以下简称ES)。下载链接及安装步骤。
ES有丰富的插件,其中有3个插件是我推荐安装的:
...阅读全文

Fastdfs分布式文件系统的应用

作者:JerryXia | 发表于 , 阅读 (0)
我们在实际项目中常常遇到这样的应用场景,用户需要上传图片,小视频或者其它文档,这些文件的大小一般在10M以内。它们很多,而且对用户来说可能还很重要,而且可能还要经常被访问,被下载,如何妥善保存这些文件就是一个需要解决的问题。
解决这个问题需要两点:一个是文件冗余备份,保证用户的文件不会丢失,另一个是高可用性,也就是说当文件服务器出现故障的时候,可以立刻让备份服务器为用户提供服务,使用户感觉不到有什么异常。
那么我们不妨分析下有哪几种解决方案:
1.粗放型: 
直接作为blob字段存数据库里,利用数据库的容灾备份和HA来保障文件安全。其实这种方案是最安全的,但是显然数据库不是用来做这个的,因为太占数据库空间。不过由于其安全性最高,笔者在之前某个项目中曾经被要求这么干,因为保存的是客户的合同文件。但是类似社交网络的图片文件是没必要这么做的。
2.简约型: 
直接存文件系统。如果有多台应用服务器同时提供文件上传服务,那么就准备一台文件服务器,分别挂载到所有应用服务器的指定路径下,实现多台应用服务器的文件写入,同时还可以配置读取静态文件更高效的nginx或者lighttpd来负责文...阅读全文

Step by step玩转RPC

作者:JerryXia | 发表于 , 阅读 (0)
RPC是实现SOA的基础,我在项目中多次玩过dubbo等SOA框架了,这种远程方法调用的方式不仅有趣而且有非常重要的现实意义。可以让我们把庞大的系统拆分成许多模块,每个模块又可以根据不同的压力启动不同数量的实例,模块间通过RPC透明地通信,从而将集中式的系统改造成分布式应用提高其扩展性,优化硬件资源利用率。
闲来无事,我们也来一步步手动实现RPC来感受下其中的乐趣吧。
第0步:写服务甭管是否是远程方法调用,写两个可以调用的服务先。


很简单,一个是打招呼服务,两个方法,一个say hello,一个say byebye。另一个是计算服务,一个加,一个减。
另外,再整个简单的线程池来提高下资源利用率
第1步:socket通信实现RPC1.服务端发布服务 
分别把GreetingService注册到3456端口,CalculateService注册到6543端口。
2.客户端订阅服务 

3.管理发布和订阅的框架 

4.服务发布线程 
服务发布的实质就是创建ServerSocket,监听服务发布的端口,当接收到请求时,根据请求中的方法名和参数动态调用方法,并把...阅读全文