【RabbitMq】2.消息持久化

在一个消息被消费的过程中,消息从队列中取出,发送到了消费者。这个过程中消息是有可能会丢失的!那么在这里先列举一下丢失消息的场景:队列设置了自动删除,再没有消费者了后会自动删除、未做持久化RabbitMQ服务宕机、消费者未处理完消息宕机。这里将讲解如何针对这3种情况做处理。
阅读全文

【RabbitMq】1.介绍与入门

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
阅读全文

【swoft.1.04】swoft中的熔断器

在应用架构中,熔断器起着同样的作用。在上一篇中说到了分布式应用架构做RPC远程调用可能遇到的问题,也就时服务在挂掉后程序互相阻塞导致整个系统雪崩。使用熔断器可以很好的解决这个问题。熔断技术可以说是一种“智能化的容错”,当调用满足失败次数,失败比例就会触发熔断器打开,有程序自动切断当前的RPC调用,来防止错误进一步扩大。实现一个熔断器主要是考虑三种模式,关闭,打开,半开。
阅读全文

【swoft.1.04】使用swoft+consul做服务注册,服务发现

前景提要在上一篇大概说了一下如何使用sowft去请求集群的服务,并实现了下图的架构在我写完后突然发现,swoole中使用服务提供者可以直接在配置中注入。不过没关系,上一篇也可以当做源码分析嘛!上一篇:今天,我会通过swoft+consul实现上图架构的升级版,也就是通过consul来实现服务注册,服务发现。在学习之前,你可能需要先补充一下consul的基础知识:那么进入正题吧! consul可以做什么consul可以通过集群
阅读全文

【Consul】下载,安装及最简单的使用介绍

前景提要在php微服务篇说到,当一个系统足够庞大,用户足够多的时候,项目就有必要对服务进行拆分。服务拆分后需要对拆分出的服务进行管理,发现,治理,这些工作做起来是非常繁琐的。好在这里有一个很好的组件,也就是这一篇的主角————consul可以帮助我们做这些事情。 什么是ConsulConsul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件 特点consul提供的一些关键特性:1. service discovery:consul通过DNS
阅读全文

【swoft.1.03】如何请求集群的服务

前言上一篇讲到了当拆分了项目中的服务到本地后如何配置一个最简单的RPC以及RPC源码的阅读。不过既然已经开始使用远程调用了,架构肯定会向服务集群的方向发展,也就是一个服务由多个服务器,客户端需要对这些服务器进行随机或有规则的访问。如果是http请求的话,可以使用nginx反向代理做负载均衡等方式,但是这里RPC使用的是TCP协议,并不经过nginx。 情景模拟假设现在要做一个直播相关项目,因为弹幕相关功能负载非常高,所以需要对弹幕相关功能进行了服务拆分,并为了高可用给弹幕
阅读全文

【swoft.1.02】Swoft中的RPC

RPC 什么是RPCRPC是微服务的基石之一,因为微服务本身的核心是将服务拆分后互相调用,调用方法一般有两种模型,一种是REST风格的API接口,另一种就是远程调用RPC了。RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,就需要通过网络来表达调用
阅读全文

【swoft.1.01】微服务介绍

前言准备开一篇微服务相关的博客,使用docker+swoft来部署微服务架构。在前公司有推行过swoft做微服务架构,结果架构推进未半而中道入院,挺遗憾的,所以自己来搞搞吧。至于内容就边写边想边学吧。 环境docker+swoft2.0.7+swoole4.4.8swoft的Dockerfile直接pull官方的docker镜像即可`docker pull swoft`至于swoft的相关知识,swoole我使用的比较熟,swoft理解不够深就不先
阅读全文

【swoole.2.07】协程化mysql的连接池

前言在上一篇中介绍了在协程中并发处理耗时操作,如第三方api接口,mysql等。在最后提出了一个问题,因为协程mysql虽然是通过io阻塞时挂起执行权限减少了php的时间成本,但是碰到mysql响应时间较慢,并发较多的情况下会导致mysql连接数过大,这时候是将后台的负担全部压到了数据库上。我们研究swoole的目的是利用协程进行性能调优,更好的利用服务器的资源而不是单纯的将后台的压力转移。所以在使用协程化mysql的时候需要引入连接池来处理。先来看看错误示范,也就是将所有压力都转移到mysql
阅读全文

【swoole.2.06】协程并发执行耗时操作,延迟收包,协程开发需要注意的事项

前言有关协程基本的知识前面已经说过了,协程的中心思想其实就是在IO阻塞的时候保存栈信息并让出代码执行权,等IO操作有返回后根据保存的栈信息切换回协程完成操作。这里就来模拟一下开发中可能会遇到的协程并发调用第三方接口及我自己和朋友们曾经碰到过的问题。 协程并发执行耗时操作 情景现在有一个功能需要依托在有节假日信息的数据上,那么现在第一步就是爬节假日数据了。这种事情一般都会使用第三方接口,但是第三方接口网络请求会有一定的io阻塞导致变慢,那么完全就可以将这部分io阻塞挂起使用
阅读全文