如何用apollo mqtt+MQTT协议实现IM功能(求教apollo mqtt架构)?

相关推荐职位
本科或以上
基本信息:
工作地点:
所属部门:技术部
汇报对象:CEO
下属人数: 0人
职位描述:
职位描述: o负责前端(iOS和Android)和服务端 (PHP)项目开发。o根据公司技术发展方向,参与创新产品开发,提出改进。o以公司的长期思想,负责明确开发需求,学习和研究新技术。o负责设计数据存储结构及系统架构,完成取数功能、优化算法,提高性能。o领导和培訓服务端和前端团队完成逻辑开发,对开发进度和KPI负责。o按系统设计功能,准确一步一步的安排写代码模块和时间,规划逻辑 ,满足项目和业务的需求。编写模块接口详细设计文档,和其他相关技术资料。o学习新版本的Android(安卓工程师),iOS(iOS工程师),和PHP(后台工程师)有关功能。职位要求:o熟悉手机IM, 开发过通讯/聊天/社交的APP,让后上线。o5+年后台(PHP或Java)开发经验,注重程序安全和代码优化,熟悉常用设计模式,熟悉主流开源框架. 熟悉后台开发框架,HTML5/WebSocket,JavaScript,熟悉一两种常用JavaScript类库。熟悉XMPP和MQTT等协议。至少了解一种数据库编程(如 mysql, oracle ,sql server ,db2 等)o有4+年Android 相关工作经验。熟悉Android的开发框架,推送(androidpn或MQTT或xmpp),对apollo或者openfire等有所了解。熟悉Android下网络通信机制,对Socket通信、TCP/IP和HTTP有较深刻的理解和经验,有网络编程经验。扎实的Java语言基础,能熟练使用Java语言进行编程。精通Android SDK,熟悉Android框架原理和应用软件开发流程。o有4+年iOS相关工作经验。熟悉iOS的开发框架。熟悉多线程编程,了解http网络通讯协议 对socket编程 TCP/IP协议。精通Object C/C/C++等开发语言,熟练掌握iOS SDK, 熟悉iOS开发工具和相关开发测试工具的使用, 熟悉iOS框架下的UI和网络。
岗位要求:
学历要求:本科或以上
性别要求:不限
语言要求:普通话
专业要求:不限
工作年限:5年以上
企业介绍:
北京图创天下科技有限公司是一家致力于用移动互联网服务大众、以手机APP开发与运营为核心的新兴网络科技公司。目前主营产品是全球第一款手机智能图片管理软件及其附加产品。公司产品立足用户需求,基于用户大量使用手机制造和处理图片为切入点,弥补用户找图难和整理手机图片的痛点,立志成为一款具有远大价值的小而美软件。 公司同时依靠对于图片的深刻理解和多年服务电子商务企业的经验,不断开辟出方寸图片的气象万千之处,与所有孜孜追求的朋友一起实践“宏伟蓝图,协力共创”的愿景!
在猎聘网,即有机会被企业HR和猎头推荐应聘
可能感兴趣的职位:
职位发布企业
北京图创天下科技有限公司
规模:1-49人
性质:私营·民营企业
地址:北京市朝阳区建国路93号,万达广场1号楼2106室
您好,我是北京图创天下科技有限公司招聘负责人,很高兴认识您,有任何问题欢迎交流沟通
订阅高薪职位
微信订阅职位
扫描二维码订阅高薪职位或在微信公众账号中搜索“猎聘秘书”
常用链接:&Apache Apollo
官网参考:
Apache Apollo是一个代理服务器,其是在ActiveMQ基础上发展而来的,可以支持STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets 等多种协议。
源码地址:
官网参考手册:
& & & & & & checkOut :
& & & & & & 看代码:
& & & & & & & & 首先准备:
Download and install Maven 3
Get the latest source(用svn checkout)
&mvn 搭建项目:
首先设置mvn : set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m
通常情况下,用该命令编译项目:mvn install。如果编译通过会在apollo-distro/target目录下找到项目编译文件。
如果不用上面的命令,可以用下面这个稍微简介一些的命令(速度快,可以跳出test) mvn -Dtest=false install
如果你想用maven生成 IDE 的 .project ,可以使用:mvn eclipse:eclipse
将项目导入 IDE方法:
&将maven 库导入IDE(eclipse)。 Java -& Build Path -& Classpath 定义一个新的变量:M2_REPO 指向 maven repository。在windows通常是 c:\Documents and Settings\$username\.m2\repository&
&你也可以通过maven命令执行上面的设置操作:mvn eclipse:add-maven-repo -Declipse.workspace=/path/to/the/workspace/
&因为项目中有scala代码,所以为了编译成功需要安装scala插件。
具体可以参看:
如果下载很慢,我有提供资源 :&
如果导入Eclipse,也安装了scala 插件,还是有一些项目报错,你需要用jar包替换报错的项目:
下面是更多介绍
原文地址:&
Apache Apollo是下一代的ActiveMQ系统。为了在多核的计算机上有更快的处理速度和更大的处理规模,Apollo“从头开始”重新设计了内核。ActiveMQ是最受欢迎的开源消息中间件(如果不是最受欢迎的,OneCoder注:作者意思应该是指如果不仅仅在开源界),并且有很好的性能,消息持久化,高可用性以及网络代理(networks of brokers)等特性。最重要的是,ActiveMQ已经在使用中变得十分稳定,并且我们已经成功使用ActiveMQ支持了如零售、银行、电子上午和政府等领域的世界知名企业。&
随着ActiveMQ的逐渐壮大, 其内部复杂的线程实现,导致其在高核心,高资源配置的计算机上扩展性不佳。线程实现问题的关键点不在于不合适的线程使用,更多的是因为其设计和开发之初,是处在没有很多可靠的异步Java API和非阻塞的IO库的时期。任何系统在有状态共享,争用同步(contended synchronizations ),独占锁的情况下都容易有扩展性问题。&
然而,ActiveMQ在其擅长的领域表现尚可,并且由于在现在很稳定,重写其线程架构似乎并不是一个好注意。所以,Apollo诞生了,现在是ActiveMQ的一个子项目。我们仍可以沿用ActiveMQ5.x系列的使用习惯去使用他,不过现在是在新的线程架构之下,并且可以支持未来百万级别的消息目标地址,成千上万的连接,高吞吐率以及对资源的最大程度的利用。特别是,当后端的兼容性完成以后,Apollo便会成为ActiveMQ6.0。&
对于那些提问说:“这是否意味着ActiveMQ的寿命即将终止?”的人。斩钉截铁的回答:不!。ActiveMQ在那之前还有很长的路要走,如之前提到的正在被企业领导所使用。ActiveMQ的Bug的修复和支持仍然依赖于FuseSource (不久将会变为RedHat),当然还有社区。只要对社区的兴趣还在,ActiveMQ(包括其他的Apache项目)就不会消亡。&
Apollo的目标不是遥不可及,它也不是一个新生的工程。它其实已经开发2年多了,在beta阶段有6个版本,在2012年2月发布了1.0版。已经有不少的人在使用Apollo。Apollo的开发经理 Hiram Chirino发布Apollo与其他消息代理的一些参数指标的对比,如:RabbiMQ,HornetQ以及ActiveMQ。参见 the stomp benchmarks here 和 the JMS benchmarks.&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25279次
排名:千里之外
原创:12篇
(1)(6)(1)(1)(1)(3)(3)(3)博客访问: 134038
博文数量: 85
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
发布时间: 14:17:24
Apollo以ActiveMQ原型为基础,是一个更快、更可靠、更易于维护的消息代理工具。Apache称Apollo为最快、最强健的STOMP(Streaming Text Orientated Message Protocol,流文本定向消息协议)服务器. 它采用一个完全不同的消息分发架构,同ActiveMQ一样支持多种协议。如STOMP,AMQP,MQTT,Openwire,SSL和WebSockets.一:linux.........
阅读(1605) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
请登录后留言。1,如何思考和建模得到需求模型,但需求模型的质量依赖于需求的素材。如果素材质量不高,需求的质量也高不到哪里去。就像做菜,如果食材是变质的,技艺再高妙的厨师也烹调不出美味的菜肴。厨师的技艺代替不了食材的质量。不过,厨师技艺越高,对食材的要求就会越挑剔。同样,建模技能虽然代替不了素材的质量,但会反向驱动素材质量的提高。从涉众处获取需求素材的工作叫做需求启发。
2,许多时候,开发人员把需求启发想得太容易。经常可以听到“采集需求”这样的表述,好像需求是蘑菇,乖乖地躺在森林里,开发人员需要时,就像采蘑菇的小姑娘一样,一个,两个,三个,四个……把它们都采回来。哪有这么容易!需求不是蘑菇。开发人员要能够像猎人一样,用锐利的眼睛发现隐藏在丛林中的猎物;像侦探一样,用慎密的思维判断出伪装成好人的凶手。
需求的一个启发障碍是知识的诅咒(Curse of Knowledge),意思是:一旦知道某个东西,就很难想像不知道它会是什么样子
3,知识的诅咒在需求启发中体现为沟通的困难。开发人员懂得许多软件设计和实现的知识,这些知识会有意无意地引导开发人员从实现的角度看需求;涉众在领域里面工作多年,许多事情在他看来一目了然,很难用开发人员能理解的言语表达出来。
需求启发的另一个障碍是做和定义的不同。涉众会做一件事情,不代表他能够把这件事定义出来教给其他人。在足球领域,号称球王的贝利、马拉多纳执教并不成功,最近十年的世界最佳主教练穆里尼奥踢球水平却很一般。要克服需求启发中的障碍,需要回溯到第2章的陈述:
和涉众交流的形式应该采用视图,而不是模型
和涉众交流的内容应该聚焦涉众利益,而不是需求。
4,需求启发手段&
a,研究资料
研究资料往往是需求启发的第一步,目的是为了获取领域的初步知识,为下一步的启发工作作知识准备.研究资料的工作容易被开发团队忽视。很多时候,开发人员没有知识准备,就匆匆忙忙去找涉众调研,问的问题很肤浅,也观察不到有价值的信息。时间花了,效果并不好。开发团队到客户那里去半个月,也许得到的信息还不如客户的竞争对手去半天,因为竞争对手有充足的知识准备,知道该看什么,该问什么。研究的资料可以是涉众的工作手册、行业手册,工作中的表格、文件、便函、工作报告、作业日志、来往Email,以及当前运行系统及其文档等等。在网络越来越发达的今天,在网上查找资料也是知识准备的高效手段。研究资料的时候要注意尽可能研究实际使用中的资料,尽量不要空白的。很多时候涉众在表格和文档里填的东西,和表格文档各项标题所标示的名称不一样。
b,问卷调查
当需要调查的人群分布较广时,随意挑选几个人来访谈或观察是不够的。例如,要去调研一个即时消息软件的需求,如果仅在自己公司随便找几个人问,事实上这几个人很可能都属于一类人“软件开发人员”,他们的利益诉求不能代表即时消息软件其他类型的涉众,例如“中学生”、“新闻工作者”,“网络管理部门”。如果涉众的分类尚不明确时,就需要做一些问卷调查(电子的或者纸张的),根据问卷调查的结果来给涉众分出类别,然后再从各类别中选取样本,以便做下一步的启发工作。
借助互联网的优势,可以比以往得到范围更广、人数更多的调查对象,缺点是容易鱼目混珠。应对手段是埋藏一些不可能错误的钉子,如果被调查者敷衍回答,很可能就会答错,从而可以判断这份答卷是无效的。
访谈是最重要也最常用的需求启发技术。需求工程师和涉众直接交流以收集信息。访谈并非一定要见面,电话、QQ、Email、微信等也可以作为访谈的手段
访谈时,选择的涉众代表必须名副其实,不要把“代表”等同于“主管”。需求工程师的态度要让涉众觉得自己被尊重。首先是言语上的礼貌.其次在行动上,访谈的时候身体应前倾,不时点头,发出声音“嗯-嗯”,手上做一些笔记(表明重视),适当的时候作两句总结录音——现在录音设备越来越小了,放在桌面上基本不会对访谈造成影响,是一种非常好的记录方法,如果说有什么不足之处,就是只记录了声音,回去后无法研究涉众的表情来确定涉众的真实意思。录像——可以看到肢体语言,但在有一个镜头对准的情况下,受访者往往受到影响。
问题的内容聚焦于业务流程和涉众利益,而非直接的系统需求。例如:
这个工作需要哪些材料,哪个人或者部门提供的?
这个工作产生什么结果,这些结果谁会关注?
这件事情,您最烦的是什么?
这件事情要是做得不好,会影响到谁?
问题的形式和新闻记者提问一样:5W+1H。谁(Who)、什么(What)、什么时候(When)、什么地点(Where)、为什么(Why)、怎么进行(How)。提问的时候尽量采用领域词汇,不要采用涉及软件实现的专业术语。
问问题的时候,可以跟随涉众的阐述,不断问为什么,深入探索背后的真正需求。
为什么你们要填这个表格?→这样经理就可以知道所发生的事情→为什么经理需要知道所发生的事情?→这样她就可以按需要分配资源
尽可能在涉众的工作环境里访谈。涉众在自己的工作环境中会想起许多工作中的喜怒哀乐
研究竞争对手
研究竞争对手是产品开发最关键的需求启发技术。过去说提供产品或服务时首要原则是“客户是上帝”,开发软件时,把重点放在研究客户想要什么上面,这样做没错,不过很多时候这还不够。在市场经济充分发展的情况下,任何一个领域都会有多款产品供客户选择.要为产品添加什么新功能,似乎有着无穷无尽的选择,令决策人头痛。竞争对手的软件上添加了一个“星座运程”的功能,我们要不要加上去?恰好,竞争对手们也有同样的想法――为了领先其他竞争对手,所有公司都试图在自己的产品中加入竞争对手产品的新功能,导致无奈的“军备竞赛”,最终所有的产品趋同化,只能寄望于靠价格战等手段击垮对手。
市场经济之下 ,一个领域可能都会有以下战局:有一个市场领先者,他负责向下防御,不断更新自己,并带领这个领域的弟兄们向外扩张。几家追赶者,它们负责进攻领头羊。还有一批专家型的企业,在某一方面形成突出的特点。其他众多公司想尽办法占据一小块细分市场。只有研究清楚对手和战局,才能了解自己的位置和应该采取的战略。
作为市场领先者,不能把矛头对准追赶者,应该开疆拓土,代表整个领域说话,向其他领域进攻。作为追赶者,则需要研究领先者的优点,但不是简单模仿追赶,而是在关键的地方反其道而行之——攻击领先者强势中的弱点。可以借用齐白石的话,“学我者生,似我者死”,不是“更好”,而是“不同”。
5,素质:房屋的根基是好奇心,有三根柱子:探索力、沟通力、表达力,以热情作为屋顶。
好奇心,首先指对不熟悉的事物提起兴趣的能力
好奇心,更重要的是从熟悉中发现惊奇的能力
探索力包括寻找线索和从线索中归纳问题的能力。需求工程师就像侦探一样,需要从涉众提供的各种信息碎片中拼出真正的问题。这种探索力更强调的是“合成”,而开发人员擅长的是“分解”——针对问题,采用某种软件技术解题。出题的思路和解题的思路是有区别的。
日常生活中随处可以培养探索力
沟通力包括需求工程师和涉众沟通的能力。例如,操作员说系统要简单易用。但“简单易用”并不能直接成为需求。需求工程师要耐心和涉众沟通,了解涉众是以什么标准来度量“简单”和“易用”的。
沟通力还包括需求工程师在不同涉众之间协调的能力。涉众往往有很多类,A类涉众的利益和B类涉众的利益可能在一定程度上是冲突的,录入人员希望操作步骤尽量少,但如果因此省略了一些确认和验证的步骤,使用这些录入数据的审批人员、施工人员的利益可能就会受到损害。需求工程师需要平衡各方涉众的利益以得出恰当的需求。
沟通力还包括需求工程师在涉众与程序员之间协调的能力
6,而平时程序员更多擅长的是和机器的交流能力。程序员如果要去承担需求工程师的角色,沟通力可能是木桶上最短的板。如何培养沟通力?开发人员习惯于生活在一群有较高学历、知识结构单一的软件人圈子内,而涉众往往在学历和技术知识上和我们有差距。要能够和涉众有效沟通,有意识地去改进沟通技巧是必要的。参加一些沟通技巧的训练,或者阅读一些人际交往的相关书籍,例如《人性的弱点》,这本书可以说是中国引进的最早的“沟通力”书籍之一,20多年前曾经大热。书中关于倾听和赞赏的道理到今天依然没有过时。
7,表达力在这里着重指自然语言的表达和组织的能力。需求最常见的形式是以自然语言的方式表达出来的。开发人员平时更习惯的是编程语言的表达能力,写个注释有时也想偷懒,更不用说自然语言表达的其他工件了。项目主管向涉众介绍项目,用词中经常充斥着“伸缩性”之类的字眼,明明只是一个小小的管理系统,却起名叫“××平台”,似乎大家听不懂才说明高深。
提高自然语言的表达力,可以阅读Barbara Minto的《金字塔原理》。
8,有好奇心,有探索力,有沟通力,有表达力,也掌握了各种具体的需求技能,不意味着需求工程师会尽其所能去向涉众探索需求。没有热情作为屋顶,上面提到的各种“力”不能得到贯彻。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:115258次
积分:6328
积分:6328
排名:第1324名
原创:363篇
转载:1097篇
评论:10条
(122)(295)(341)(154)(76)(161)(202)(30)(16)(8)(7)(1)(17)(26)(1)(1)(2)
http://it.taocms.org/
http://www.ikent.me/
http://itindex.net/
http://blog.csdn.net/zhangzhaokun

我要回帖

更多关于 mqtt server 的文章

 

随机推荐