【算法】1. 为什么要学习数据结构和算法

学习来源本系列内容学习自: 为什么要学习数据结构和算法 为什么你要学习数据结构和算法国内的编程圈真的很浮躁,80%的人都在专注于业务和增删改查。诚然,在真正的开发中你只需要学会几个甚至一个框架,一种数据库操作,就可以完成大部分的业务。但是在实际的开发过程中,你是否会碰到这种情况:1. 同样的功能,你的代码执行会把服务器卡死,别人的代码却可以如丝般润滑。1. 同样的功能,你的代码执行的时候会把服务器内存爆掉,别人的代码却可以顺利执行。当你碰到这种情况,对
阅读全文

【RabbitMq】3.交换机exchange的类型和使用

交换机Exchange
阅读全文

【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可以通过集群
阅读全文

【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
阅读全文