|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-08-05
项目的大体架构是这样的:
服务段采用的是 java ,客户端采用的是c++。 以前的和客户端通讯采用的是webservice(AIXS),客户端(100+)和中心端的通讯很频繁,但是客户端的机器配置客户要求普通PC机(1G的内存)即可胜任 我们测试下来发现webservice的通讯对性能的影响很大,达不到原来的设计要求,java进程在每次通讯后基本看不到有明显回收的迹象,因此想把webservice去掉,改为http的通讯方式,即以字符串的拼接来完成数据。但是这样有一个问题,原来的服务端的很多返回数据都以如下格式组织的
public class User {
private String name ;
private String password ;
private int age;
private String sex ;
private boolean status ;
private ArrayList list ;
private UserInfo info ;
private byte[] photo ;
如果以字符串的方式返回,就势必使我们很多的地方要做大的修改,业务逻辑也会有大的拆分。 于是我想到了JSON,能够很好的使用原有的接口和返回对象,不过客户端那边似乎没有很好的JSON的C++的类库扩展, 解析起来很是麻烦。 不知道大家有什么好的建议? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-10
JSON的C++的类库还是有的,去 http://www.josn.org 看看。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
1、服务端自己拼字符串生成xml 2、会重用的数据,缓存xml,这点很重要 |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-10
myy 写道 JSON的C++的类库还是有的,去 http://www.josn.org 看看。
貌似没有合适的,能向webservice那样一劳永逸的解决问题。。。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-10
m7788 写道 1、服务端自己拼字符串生成xml 2、会重用的数据,缓存xml,这点很重要 谢谢指点。。 1 我们生成XML绝大部分采用的是JAXB,测试下来的确存在性能问题,不过我们有时候数据结构很复杂,比如:list里面装对象,该对象里面有存在list。。 2 每次返回给客户端的数据都是实时的,也就是说需要在数据库或者内存中query生成,不过缓存XML倒是提供了一条很好的思路,给客户端比较单一的command 倒是可以如此。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
我是说缓存单条记录,查询时只返回id,以id为key查出xml,看需要可以更新缓存
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-05
m7788 写道
我是说缓存单条记录,查询时只返回id,以id为key查出xml,看需要可以更新缓存
您说的缓存是这个样子的啊 嗯 根据我们的业务其实很难,因为数据的组合有很多种的,比如客户端的登录认证,当前使用客户端的实时信息,每隔一段时间的合法性校验,当前使用某个客户端的用户的实时信息等等,这些个通讯的载体都是XML,如果缓存的话势必要在内存中维护很多个放XML的Map。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
看楼主这样的描述,情况如果真的是对象集合一起嵌套。。。确实会存在很大问题。别说慢,有时候甚至会down机。像楼主说的放入map,也有问题:是否想到过,如果数据量非常大,会产生数据冲突问题
1.缓存是一个对策
2.根本的问题还是数据结构的解决。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
没听说过axis2有性能问题,加几根内存条好了再强制回收回收。个人觉得放弃webservice比较搞笑。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
black_zerg 写道
没听说过axis2有性能问题,加几根内存条好了再强制回收回收。个人觉得放弃webservice比较搞笑。
在代码里面强行的GC,我们也做过,但在 jprofiler 中查看并没有明显的改善。 至于加几根内存,呵呵,客户不同意,最多上到1G |
|
| 返回顶楼 | |




