谈 API 的撰写 - 子系统】的更多相关文章

在做一个系统时,有一些子系统几乎是必备的:配置管理,CLI,以及测试框架. 配置管理 我们先说配置管理.一个系统的灵活度,和它的配置管理是离不开的.系统中存在的大量的预置的属性(下文简称 property),需要有一个公共的地方来放置.这里我不说「常量」,而是说「预置的属性」,是因为这属性可能需要在运行时发生改变,而常量的范畴会让人有所误解. 最简单的配置管理就是把所有的 property 放在一个配置文件中,在系统启动的时候读入.配置文件的类型有很多选择:ini,json,yaml,toml…
在 谈 API 的撰写 - 总览 里我们谈到了做一个 API 系统的基本思路和一些组件的选型,今天谈谈架构. 部署 首先要考虑的架构是部署的架构.部署的方案往往会深刻影响着系统的结构.我们需要问自己一个问题:从宏观上看,这个系统我们希望如何进行部署? 很多 API 系统是这样部署的(方案一): (load balancer 和 nginx proxy (web server) 可能是同一个 cluster.这里逻辑上把他们划分开来.) 这是很典型的做法,所有的 API 在一套系统里部署,简单,高…
背景 之前团队主要的工作就是做一套 REST API.我接手这个工作时发现那些API写的比较业余,没有考虑几个基础的HTTP/1.1 RFC(2616,7232,5988等等)的实现,于是我花了些时间重写,然后写下了那篇文章. 站在今天的角度看,那时我做的系统也有不少问题,很多 API 之外的问题没有考虑: API 的使用文档.当时我的做法是把文档写在公司使用的协作系统 confluence 里,但这样做的最大的问题是:代码和文档分离,不好维护. API 的监控.整个 API 系统没有一个成体系…
浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题. 跟踪探索了一段时间的源代码后,我写下了这篇总结,希望在 Linux 无线网络的工作原理上,读者…
前言 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题. 跟踪探索了一段时间的源代码后,我写下了这篇总结,希望在 Linux 无线网络的工作原理上,读者能从这篇文章获得一个具有帮助性的概览. 1.全局概览 在开始探索 Linux 无线具体细节之前,让我们先来把握一下 Linux 无线子系统整体结构.如图1,展示了 Linux 无线子系统各个模…
前面在谈微服务架构的时候,我博客上转过Chris Richardson 微服务系列中对微服务网关的描述: 通常来说,使用 API 网关是更好的解决方式.API 网关是一个服务器,也可以说是进入系统的唯一节点.这与面向对象设计模式中的 Facade 模式很像.API 网关封装内部系统的架构,并且提供 API 给各个客户端.它还可能还具备授权.监控.负载均衡.缓存.请求分片和管理.静态响应处理等功能.下图展示了一个适应当前架构的 API 网关. API 网关负责服务请求路由.组合及协议转换.客户端的…
序言 API经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API成为企业连接业务的核心载体, 并产生巨大的盈利空间.快速增长的API规模以及调用量,使得企业IT在架构上.模式上面临着更多的挑战.关于如何承载现有快速发展的API生态链,本文接下来介绍API网关在其中扮演的角色. API是什么 应用编程接口(Application Programming Interface,简称:API),就是软件系统不同组成部分衔接的约定[维基百科].简单的例子: 您每次登陆微信, 需…
为什么需要了解一些API设计? 只要你编程,你就是API Designer 一个好的设计,模块之间的耦合应该也是API级别的 一个程序,如果你独立开发,那你既是API的Designer,也是API的User 如果你和你的同事一起开发,,你既是你开发的模块API的Designer,也是其他同事模块API的User 一个好的API应该具备哪些特点? 1. 易学易用(Easy to learn and use) 要做到易学易用,需要满足以下基本要求: a. API命名的要适应用户的习惯并遵循一些模式.…
一.简述 安全是恒久的话题,如果不注意防范,会带来很严重的后果.比如: 1.接口被大规模调用消耗系统资源,影响系统的正常访问,甚至系统瘫痪 2.数据泄露 3.伪造(篡改)数据,制造垃圾数据 4.App被仿制- 那么我们设计API时,就要保证RESTful API的安全性,主要包括三大方面: a) 对受限资源的登录授权 b) 对请求做身份认证,并且防止篡改,重放攻击 c) 对敏感的数据做加密 二.受限资源的登录授权 此流程不是本文重点,不赘述,基本流程如下: 1. 客户端提交账号信息(用户名+密码…
Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景.解决方案以及案例.对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由.组合及协议转换.如Chris所言,在微服务的应用程序中,客户端和微服务之间的交互,有如下几个挑战: 微服务提供的API粒度通常与客户端的需求不同,微服务一般提供细粒度的API,也就是说客户端需要与多个服务进行交互. 不同的客户端需要不同的数据,不同类型客户端的网络性能不同. 服务的划分可能会随时间而变…