Day: 2019年3月11日

互联网项目中mysql应该选什么事务隔离级别

摘要

企业千万家,靠谱没几家。
社招选错家,亲人两行泪。

祝大家金三银四跳槽顺利!

引言

开始我们的内容,相信大家一定遇到过下面的一个面试场景

面试官:“讲讲mysql有几个事务隔离级别?”
你:“读未提交,读已提交,可重复读,串行化四个!默认是可重复读”
面试官:“为什么mysql选可重复读作为默认的隔离级别?”
(你面露苦色,不知如何回答!)
面试官:”你们项目中选了哪个隔离级别?为什么?”
你:“当然是默认的可重复读,至于原因。。呃。。。”
(然后你就可以回去等通知了!)

一文读懂HTTP/2 及 HTTP/3特性

前言

HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。

虽然 HTTP/2 提高了网页的性能,但是并不代表它已经是完美的了,HTTP/3 就是为了解决 HTTP/2 所存在的一些问题而被推出来的。…

        

Nginx 多进程架构和惊群问题

Nginx 多进程架构是:一个master进程和多个worker 进程。
一个worker 通过非阻塞式论询,可维护数千个连接,多个worker共享一个监听套接字.

Master进程

顾名思义,老板进程,主要负责有轻而巧的工作.
主要通过进程间通信对工人进程发号施令或是处理来自bash的start,stop,reload等用户指令。

Worker 进程

顾名思义,工人进程,主要负责重而笨的工作,主要负责处理来自浏览器的连接。
网站高并发情况下,巨大的工作负荷都是压到工人进程,老板进程在一旁观看指挥。

在TCP Socket 服务开发中,多进程或多线程共享监听套接字时面临惊群问题.

  1. 对于主流的linx版本, accept 阻塞调用,已经不存在惊群问题.
    也就是说多个进程同时accept 同一个 监听套接字,只有一个进程获的连接.
  2. 对于epoll_wait 非阻塞式的创建连接方式, 存在惊群问题。(即:一个连接请求唤醒多个worker 进程).

Nginx 在linux系统中使用epoll_wait 非阻塞式的方式,存在惊群问题。

浏览器的请求连接不经过master进程,直接由worker 进程处理,
但是一个请求如何分配到特定的worker进程?

  1. nginx 默认的配置accept_mutex on;
    多个worker 进程通过争锁获得连接,同时只有一个worker获得连接。
    工人进程抢着活干(让我来,别和我争)
  2. accept_mutex

Nginx开启一个参数就能让你的WEB性能提升3倍

一、遇到的一些问题

记得 2008 年做性能测试的时候,新进7台 lenovo 4核4G 服务器用于性能测试。

当时资源紧张,这7台服务器都装了双系统(Win2003/CentOS5)空闲时用于做测试机(压测的Agent)。

当时给Nginx做了一系列测试,印象很深的是:在这批机器上,Nginx状态页面的压测。

短连接的话最佳QPS约4万,长连接的话最高QPS约13万。…

        

为nginx动态模块创建可安装包

编辑 – 这篇文章是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 第一篇文章提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 本文提供了用于为生产环境自动化第三方动态模块构建的指导和工具。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。

NGINX 1.11.5和NGINX Plus R11引入了对独立于NGINX本身编译动态模块的支持。这允许NGINX和NGINX Plus的用户使用NGINX,Inc。存储库中的官方版本并加载他们需要的动态模块。动态模块有几个来源:…

为NGINX和NGINX Plus编译第三方动态模块

本文是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 本文提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 第二篇文章提供了指导和工具,用于为生产环境自动化第三方动态模块构建。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。

微服务架构入门

微服务架构入门

1. 微服务简介

微服务是一种架构风格,一个大型的复杂软件由一个或多个微服务组成。系统中每个微服务都可以被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成任务。在所有情况下,每个任务代表这一个小的业务能力。

微服务的核心思想是:一个完整的应用由多个小的、相互独立的微服务组成,这些微服务运行在自己的进程中,开发和发布都没有依赖。不同微服务通过一些轻量级交互机制来通信,例如RPC、HTTP等,服务可独立拓展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立团队维护。简单的来说,一个系统的不同模块转变成不同的服务!而且服务可以使用不同的技术加以实现!…

2019 为什么我们还会继续使用 PHP ?

我们来开门见山地说。  PHP 是一门奇葩的语言。它既不快,语法又不漂亮。还没有遵守良好的软件开发实践。 但我还是使用它开发了很多软件。 那么问题就很明显了 为什么今天还在使用 PHP ?

除了个人理想主义的偏好以外,还有很多理由。这才是我们要讨论的范围。为什么选 PHP 作为我的 Web 开发语言?…