PHP是最好的语言,大家都知道。但这个语言有个缺点,就是无状态性。你想在php中hold一个连接池什么的,是做不到的。但php用来做前端页面确实方便,而且说句大不敬的,phper的工资也相对低不是吗?
这时候可以用php+java来解决。php解决前端问题,通过RPC(如thrift之类)来调用后端Java写的业务层。php只管调用业务层,拿到处理处理后做前端展示。这样做需要解决一个问题:php如何发现后端服务?
最简单的方式。php里面写死N个后端服务地址。这样做缺点是,如果其中一个挂了,会让部分请求失败。而且当你后端新增节点,需要升级所有php服务器。那么我们可以用zookeeper来保存整个后端服务的状态。但这样php每次访问都需要去zookeeper拉取可用服务列表,这显然不大现实。解决方案可以在php的服务器上,同时再跑一个java的服务,他的任务就是watch zookeeper,及时把可用的服务拉下来,存到本地供php使用。这样服务器增加、减少,可以在第一时间就更新到本地。php就能立即获取到可用服务列表了。