为什么用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 -

96

微服务中消息总线架构设计应用

微服务中消息总线架构设计应用

当一个O2O电商系统到达一定规模之后,就需要考虑系统的可扩展性、松耦合和组件化。一般采用的都是基于时下比较流行SpringCloud和Dubbo的分布式的微服务的架构模式,虽然模块间能够独立部署了,但是模块间的还是强依赖关系,每次改动都需要重新发版上线,产品迭代速度又快,使用分布式的消息总线设计就可以解决这些问题。

设计模式中单例模式设计时需要注意的5个问题

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。使用的时候需要注意有状态和无状态单例的使用场景,多个JVM中会产生多个单例对象,同一个JVM中多个类加载器加载可能会导致出现多个单例对象,使用单例不能实现Cloneable和Serializable接口,否则会出现多个单例对象。一个饿汉式单例类在多线程调用的时候,在生成的时候要使用synchronized对该方法进行线程同步,否则会导致不同的线程将单例的对象属性数据进行相互覆盖。