跳转至

软件架构与设计

Debounce vs Throttle

DebounceThrottle是javascript中两种手段来控制函数的执行,特别是事件的处理。

当处理scroll,resize, keyup等事件时候,由于每秒触发的时间频次太多,不断的通过绑定回调函数来处理,会对浏览器造成巨大压力。这时候Debounce和Throttle就派上用场了。

Debounce

debounce强制函数某段时间只会执行一次,会把大量事件聚合在一次执行,哪怕它本来会被调用多次。

而throttle好比每隔15分钟一趟的电梯,过点不侯,debounce也每隔15分钟一趟,但当它看见有人要进来时候,它会允许进来,并从进来那一刻算起在等15分钟,如果15分钟内没有人进来了,就会开走。

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

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

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

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

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

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

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

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

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

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

1. 臃肿的类

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

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

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

Conversation With API Builders

原文链接:http://conversation.bigbinary.com/

Conversation With API Builders

Bad APIs have one thing in common—they do not handle response status codes effectively. They all use custom solutions while the status code value can be attached to the HTTP resonse. This ebook covers when to use what status code and much more.

1. Return 200 when it is all good

API user : Hey, I have a problem.

API builder : What’s wrong.

API user : I sent a request to the API to create a user. But I do not see the newly created user.