renguifeng 发布的文章

由于公司的产品涉及到软件和硬件,同时,也用到了mqtt服务。我负责的这个产品从诞生到现在,mqtt服务也经历了好几次的更替。这个主要是从并发角度去考虑的。

1,Apache ActiveMQ,这个mqtt服务是我们最早使用的也是使用时间最长的一款mqtt服务软件,这个mqtt服务有很多有点,但是,它的缺点最终让我决定把它替换掉。那我就简单地列举一下缺点。最核心的缺点就是占用CPU比较高。举例说明,例如一个服务器的CPU是12个核,32G内存,当并发数量增加到2000以上的时候,CPU的使用率瞬间就会飙升到100%,也有可能会持续很长时间。占用这么高的CPU,最终就会导致整个系统无法正常使用。占用CPU过高最核心的问题就是Java这个虚拟机导致的,所以,这个没有办法从根本上解决问题。

2,mosquito,这个是c语言实现的一个轻量级的mqtt服务,相比于activemq它会减少很多的CPU资源,进而降低整个服务器的压力。总体来讲这个软件还是比较不错的。但是,最近一个项目上发现这个mosquito进程占用的CPU并不高,高峰期使用率只有14%左右,始终维持在2000左右的并发数量,项目现场的终端在3000台左右。每一台终端都会建立一个mqtt客户端连接。这样就会导致将近700台左右的设备无法正常连接服务器。没办法只能替换。最后终于找到原因了,这是因为网卡是百兆网卡,现场工程说是因为网线问题导致服务器的千兆网卡变成了百兆网卡。

3,emq,这个是erlang编程语言实现的一个mqtt服务,erlang编程语言的优势就是对并发的处理。可以这么说,erlang语言就是为并发而生。从这一点不能看出,到目前为止,emq是我使用过的所有mqtt服务性能最优的一款软件。尽管erlang也是以虚拟机的方式在运行,但是它占用的CPU资源要远比Java少的多,可以与mosquito相媲美。使用erlang既解决了并发问题,同时也解决了CPU使用率过高的问题。erlang编程语言里面的线程叫做协程,它可以用更少的资源来处理并发请求。

https://www.emqx.io/docs/zh/v4.4/getting-started/cluster.html#%E8%8A%82%E7%82%B9%E5%8F%91%E7%8E%B0%E4%B8%8E%E8%87%AA%E5%8A%A8%E9%9B%86%E7%BE%A4


1.常用的开源协议:

Apache License 2.0
要点:Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。但要保留原有的license。

BSD开源协议(Berkerley Software Distribution)
要点:商业软件可以使用,也可以修改使用BSD协议的代码。

GPL ( GNU General Public License )
要点:商业软件不能使用GPL协议的代码。

LGPL ( GNU Library or "Lesser" General Public License )
要点:商业软件可以使用,但不能修改LGPL协议的代码。

MIT ( MIT license )
要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。

MPL ( Mozilla Public License 1.1 )
要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。

CDDL (Common Development and Distribution License )
要点:商业软件可以使用,也可以修改CDDL协议的代码。

EPL (Eclipse Public License 1.0 )
要点:商业软件可以使用,也可以修改EPL协议的代码,但要承担代码产生的侵权责任。

2.总结

从上面的总结看出来,常用的开源软件协议中,只有GPL许可证的开源软件是不能作为商业用途的,其他虽然有限制但是也是可以的。
所以如果你要为一个商业软件寻找一个开源的软件工具,那么最好不要使用GPL许可证下的软件。否则,在以后产品商业化的时候就会遇到麻烦。

https://interactjs.io/

https://beefree.io/

https://hammerjs.github.io/

https://yabwe.github.io/medium-editor/

https://premiumsoftware.net/cleditor/

https://www.simonewebdesign.it/how-to-make-browser-editor-with-html5-contenteditable/

https://github.com/unlayer/react-email-editor

https://editorjs.io/base-concepts

https://shopify.github.io/draggable/examples/

https://github.com/prevwong/craft.js

https://jsfiddle.net/Twisty/zzv5gdg2/

https://designer.igniteui.com/

https://wiredjs.com/showcase.html

https://ace.c9.io/#nav=about

https://github.com/topics/html-editor

https://cappuccino-cookbook.5apps.com/

https://qooxdoo.org/qxl.demobrowser/#animation~Animation.html

https://github.com/H5-Dooring/dooringx

https://github.com/vanila-io/wireflow

https://www.bootcss.com/p/layoutit/?#

https://muuri.dev/


辽公网安备21010602000703号 备案号:冀ICP备2022001219号