为什么用Docker部署Workerman项目?
2021-07-05 - kblog
Workerman是什么?
workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。
workerman的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。 workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行。
为什么不在Windows上直接Workerman项目呢?
Workerman 3.5.3版本以后是支持在Windows上运行的,但是在Windows上运行有诸多的限制:
- 1、win版本单个进程只支持200+个连接
- 2、win版本count属性无效,全部为单进程
- 3、不支持start stop reload restart status命令
- 4、无法守护进程,cmd窗口关掉后服务即停止
- 5、性能比较差,因为没有windows上并没有pcntl、posix和event等扩展,所以跟Linux上相比,性能会比较差,所以不建议在Windows作为生产环境运行。
直接在Linux上运行Workerman项目不香吗?
Linux安装每个环境研发、测试和生产等,每台服务器都要进行一次安装,系统稍有差异就会造成很大的工作量,同时因为版本的差异可能会造成代码的不兼容,无法全面进行测试和验证。
Docker上运行Workerman项目的优势
- 1、Docker相比虚拟机有先天的优势,足够轻量级,性能也很好,完全能够做到环境一致性,提高可测试性。
- 2、Windows上使用Docker部署可以完全做到运行环境一致,完全保证开发代码的一致性和正确性。
- END -
微服务中消息总线架构设计应用1
当一个O2O电商系统到达一定规模之后,就需要考虑系统的可扩展性、松耦合和组件化。一般采用的都是基于时下比较流行SpringCloud和Dubbo的分布式的微服务的架构模式,虽然模块间能够独立部署了,但是模块间的还是强依赖关系,每次改动都需要重新发版上线,产品迭代速度又快,使用分布式的消息总线设计就可以解决这些问题。
设计模式中单例模式设计时需要注意的5个问题
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。使用的时候需要注意有状态和无状态单例的使用场景,多个JVM中会产生多个单例对象,同一个JVM中多个类加载器加载可能会导致出现多个单例对象,使用单例不能实现Cloneable和Serializable接口,否则会出现多个单例对象。一个饿汉式单例类在多线程调用的时候,在生成的时候要使用synchronized对该方法进行线程同步,否则会导致不同的线程将单例的对象属性数据进行相互覆盖。