使用Consul,Bind和Nginx实现服务端服务发现

在微服务架构实践中,一个难点是服务发现。每一个服务采用分布式部署,保证了拓展性和容错性,但带来了一个难点是如何监控这些服务,如何找到这些服务。

服务发现的种类有两种:客户端发现和服务端发现

客服端发现-客户端或者API网关查询注册中心获取服务的位置信息。支持服务注册的软件有EtcdZookeeperConsul

阅读更多

什么是双因素身份认证(2FA)?

英文原文:two-factor authentication (2FA)

Two-factor authentication (2FA), often referred to as two-step verification, is a security process in which the user provides two authentication factors to verify they are who they say they are. 2FA can be contrasted with single-factor authentication (SFA), a security process in which the user provides only one factor – typically a password.

双因素身份认证(2FA),经常被认为是两步骤认证(two-step verification)。它是一个安全处理措施,用户需要提供2个认证因素来证明他们的身份。2FA可以和单因素认证(single-factor authentication)进行一个对比,单因素认证只需要提供一个认证因素,典例的是密码认证

阅读更多

如何正确选择一个HTTP状态码

HTTP状态码(HTTP Status Code)是3位数字代码,用来表示服务器HTTP响应状态,它由RFC2616 规范定义的。所有状态码第一个数字代表其所属的状态分类。服务端返回响应数据时候,HTTP协议号和状态码作为Response line返回给客户端

在开发过程中,特别是基于RESTful架构,一个语义正确的HTTP状态码,显得十分有必要,它能够帮助客户端接受者能够从状态码快速甄别资源的状态。作为服务提供者,需要在客户端请求和服务的状态下选择一个正确的状态往往不是那么容易的事情。比如客户端访问一个受限的资源,返回401还是403就得细细考虑了。

阅读更多

PHP反射API初探

1. 什么是反射

反射在百度百科里面的解释是“反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象”。

PHP提供了对类、函数、方法以及拓展进行反射的能力。通过反射我们可以在动态运行程序时候,获取类的名字,参数,方法、注释等信息以及动态调用对象方法,通过这些可以实现自动生成文档、自动注入依赖,插件管理。

反射的优点:

  1. 反射提高了程序的灵活性和扩展性。
  2. 降低耦合性,提高自适应能力。
  3. 它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

阅读更多

6个重构方法可帮你提升80%的代码质量

原文地址:Top 6 Refactoring Patterns to Help You Score 80% in Code Quality

在过去做了不少代码审核,发现了一些代码质量上普遍存在的问题,以下是其中的前五名:

1. 臃肿的类

类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解。这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面。

解决方法:提取类/抽离方法
正如上面提到的,像“臃肿的类”(一个类提供了本该有几个类提供的功能)这种代码异味应该将原有类中的方法和属性移动到适当数目的新类中去。旧类中对应新类的方法和属性应该被移除。

另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。

阅读更多

使用Xdebug和Webgrind优化PHP代码

在PHP开发过程中找到并修复性能瓶颈(performance bottlenecks)往往是非常困难和耗时的。为了定位问题,我们可能会在疑似影响性能的代码的开始和结束之间打上标记点,计算时间差,来定位问题,CI框架提供的基准测试类就是这样工作,这种方式对小型项目起到方便快捷的作用,但对大项目往往吃力不讨好,好比在工业时代,却是用石器时代的工具。这时候我们可以借助Xdebug,webgrind这样的工具来定位到和可视化php代码中的性能瓶颈。

Xdebug是PHP拓展,可以用来跟踪,调试和分析PHP程序的运行状况。而Webgrind是Web应用,提供一个可视化工具,来分析、查看Xdebug性能日志功能。在Linux KDE环境下可以用KChaceGrind,windows 下可以用winChaceGrind来替换Webgrind查看分析Xdebug日志。

阅读更多

Improve the performance of your webapp: configure Nginx to cache

Nginx

原文链接:https://www.theodo.fr/blog/2016/06/improve-the-performance-of-your-webapp-configure-nginx-to-cache/
Sometimes, improving the user’s loading experience is not enough, and you need real changes to make your application load faster.
So you try CSS and JS minification or image compression but your app is only a bit faster to load. These tricks reduce the size of resources that need to be downloaded, but what if your users didn’t have to download anything at all? That’s what caching is for!

In this article, I will explain how you can configure Nginx to enable the browser cache, thus avoiding painfully slow downloads. If you are not familiar with Nginx, I recommend reading this article.

阅读更多