- 博客(19)
- 收藏
- 关注
Apache Thrift 初学小讲(九)【测试接口的QPS】
QPS是接口每秒处理成功的调用次数,RT是处理一次请求所需要的平均时间,并发量是系统能同时处理的请求数。公式:并发量 = QPS * 平均响应时间。 这3个是比较重要的性能指标,如何测试这几个指标呢,可以用工具jmeter,jmeter原生支持http,但像thrift这种rpc接口就需要自己写jmeter的扩展了,可以参考https://www.jianshu.com/p/455e5...
2018-07-10 01:07:44 1214
开源一个nodejs写的商城系统
zshop是一个nodejs写的商城系统,看完廖雪峰的《javaScript全栈教程》后,想练练手,已是开始踩坑之路。目前完成了首页,商品搜索,购物车,我的,登录,商品详情,结算等,后面将继续完善其它功能。完善后会把数据库的er图画出来。github地址:https://github.com/halloffamezwx/zshop。 在线预览效果地址:http://120.78.200...
2018-03-15 00:26:57 14523 3
分布式事务
在soa的架构中,假设有注册用户服务A,A做的事很简单,就是insert一条记录到user表,并且调用赠送用户积分服务B,B做的事也很简单,insert一条记录到coin表。服务A和B是分别部署在两台不同的机器,有可能发生的一种情况就是A在调用B的时候,B插入coin表一条记录并返回成功标志通过网络传输给A,假设在网络传输中,网络堵塞,这时A调用B的结果就是超时失败,A将会回滚user表,但此...
2017-09-15 21:42:44 278
Apache Thrift 初学小讲(八)【zookeeper实现服务注册与发现】
本节在《负载均衡》的基础上利用zookeeper实现服务注册与发现,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 基本思路就是把服务注册到zookeeper上,代理连接到zookee...
2017-05-31 00:15:02 669
Apache Thrift 初学小讲(七)【负载均衡】
本节在《代理》和《连接池》的基础上加上负载均衡,主要的思路是在代理上加上集群服务的n个连接池,客户端连接到代理上,代理转发时根据负载均衡算法选择一个合适连接池中的连接: 一般的负载均衡算法有:1 [加权]轮询法([Weight] Round Robin),2 [加权]随机法([Weight] Random),3 源地址哈希法(Hash),4 [加权]最小连接数法(...
2017-05-15 10:35:43 594
Apache Thrift 初学小讲(六)【spring】
这节把spring整合进Thrift,这次用maven来构建工程,maven的pom.xml加上依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4....
2017-04-28 17:14:29 217
关于java gc和有close方法的对象
我们知道有些java对象比如socket,io流等是有close方法的,一般可以在finally块内调用然后释放资源,假如我们忘记调用close方法,当java gc这个对象的时候也会释放资源,不过java gc是不能确定时间的,所以最好用完了就手工close一下。 下面我们用ServerSocket的例子来证明垃圾回收是会释放内存和端口的:import java.net.Serve...
2017-04-26 00:17:08 258
原创 Apache Thrift 初学小讲(五)【代理】
WEB中我们很常见的一种部署方式是在几个tomcat前面加一个nginx做反向代理,此时的nginx有了负载均衡和路由网关的功能。nginx工作在http层,thirft服务工作在tcp层上,所以不能用nginx作为thirft服务的代理(据说nginx可以装一个插件来支持tcp层)。tcp层上的有一个开源的叫HAProxy,用成熟的开源软件有好处,受限制也比较大,本节是用3种方式实现thirft...
2017-04-10 01:33:11 380
从tomcat 8源码看sessionid是如何获取的
在请求tomcat的时候,tomcat会从url或者cookie里拿sessionid。从下面源码看到先从url获取,然后再从cookie里拿,好像覆盖了,其实并不是,当cookie被浏览器禁用时,会将cookie的sessionid信息重写进url,URL重写设置sessionId或者放到cookie中传递过来,两者方式只会用一个。 org.apache.catalina.connec...
2017-03-27 17:46:28 481
java用HttpURLConnection和GZIPInputStream下载gzip压缩的图片
最近用HttpURLConnection下载一个图片的时候,下载下来死活打不开,显示文件格式已经损坏,直觉这可能是个压缩文件,于是改成用winrar打开,果不其然。进一步查看http head的Content-Encoding,没错是gzip,浏览器发现这个gzip报文头就会自动解压,而我们自己写代码就要用GZIPInputStream来处理了。gzip这种压缩应该对html css j...
2017-03-15 19:07:08 1103
java用HttpServletRequest取得http请求体
java用HttpServletRequest取得http请求体import java.io.IOException;import javax.servlet.http.HttpServletRequest;public class HttpUtil { public static byte[] getRequestPostBytes(HttpServletR...
2017-03-14 16:57:23 535
Apache Thrift 初学小讲(四)【用Apache Commons Pool实现连接池】
Apache Thrift本身没有提供连接池,我们可以用Apache Commons Pool来实现一个,Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现连接池/任务worker池等,大家常用的dbcp数据库连接池,也是基于commons-pool实现的。TCP连接池里的是Socket对象,那么对于th...
2017-01-10 01:07:25 421
Apache Thrift 初学小讲(三)【http】
在上一节Apache Thrift 初学小讲(二)【一个简单示例】中client端提到http类型的transport,但是并没有给出相应的服务端实现。本节主要写一个transport为http的例子,以java为例,server端thrift提供了一个类TExtensibleServlet,只需要写一个servlet继承这个类,并实现以下抽象方法即可: protected TPr...
2016-12-27 15:02:35 310
Apache Thrift 初学小讲(一)
一 简介: Apache Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apache 基金会的顶级项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性,所以thrift可以支持多种程序语言:C++, Java, Python, ...
2016-12-23 14:56:14 280
Apache Thrift 初学小讲(二)【一个简单示例】
一 生成代码首先写一个接口定义文件ThriftTest.thrift,里面定义了一个User的struct和一个getUser接口,以java为例,cmd执行命令thrift --gen java ThriftTest.thrift,成功后会在ThriftTest.thrift文件所在的目录生成一个gen-java的文件夹,里面包含了生成的代码文件:gen-java\thrift\test...
2016-12-23 14:42:38 360
从tomcat 8源码看session cookie maxage的配置
最近有兴趣看了tomcat 8源码对session cookie的处理,才发现web.xml支持对session cookie配置maxage,如果不配置默认就是-1,-1表示这个cookie在当前浏览器窗口有效,存放在内存中而不是硬盘,关掉当前浏览器窗口的话,这个cookie失效,会话结束;如果设置了maxage(不等于-1),则存放到硬盘。 部分源码:org/apache/ca...
2016-07-28 12:52:12 956
jquery mobile + 百度地图 + phonegap 写的一个"校园助手"的app
1 jquery mobile + 百度地图 + phonegap 写的一个"校园助手"的app,使用的是基于Flat-UI的jQuery Mobile,请参考:https://github.com/ququplay/jquery-mobile-flat-ui-theme; 2 app里使用百度地图的 js api 做了一个校园内的步行路线规划的功能; 3 phonegap的使...
2016-07-03 21:41:43 378
java把ip地址存放到一个int型变量
java把ip地址存放到一个int型变量 package com.zwx;public class test { public static void main(String[] args) { byte[] bt = new byte[4]; bt[0] = 111; bt[1] = 112; bt[2] = 113; bt[3] = 114...
2015-10-29 15:26:57 453
原创 c++使用happyhttp发送http请求
最近项目有需求要用c++发送http请求,找了一个开源的叫happyhttp,看了一下例子是c形式的用法,不是很习惯,改造了一下增加了一个CMyHappyHttp的class变为c++形式的。happyhttp官网:http://scumways.com/happyhttp/happyhttp.html。本人主要是java的,c++人手不够也帮忙做做,如有不好的地方,欢迎指正。代码请参看附件。...
2015-10-26 22:50:01 474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人