从零开始的Microservices服务搭建(一)
Comments
tags:技术, NodeJS, TypeScript, Javascript
Architecture(架构)一词源于建筑学,指建筑物在大尺度上是如何靠内部支撑物相互结合而稳固构造的方式 Architect(架构师)是为满足软件设计目标而在较大尺度上进行整体构思的角色 -- 架构、架构师的定义 建议读本文前先找几本关于Microservice的书阅读一下,我的Slack bookshare里面有几本。 相比设计思想一脉相承的SOA(Service Oriented Architecture),Microservices 是一种把服务分解到更细粒度,松耦合的架构风格。 使用微服务,你的代码将被分解为独立的服务,而这些服务可以用不同的语言开发、部署在不同的地方、作为单独的进程运行。这样的架构风格提供了更高的模块化,使程序更易于开发、测试、部署,最重要的是,更改和维护。(和敏捷开发契合度很高) 市面上有很多微服务的框架,Java的有Spring Cloud和Dubbo(不推荐,缺少很多组件且曾经多年没人维护,使用老旧的RPC),NodeJS也有Seneca和Moleculer可选。不过对于有理想和追求的程序员来说,有什么比自己亲手搭建一个能使自己更了解这种架构呢?(只知道调用API,调整别人的配置有什么意思!) 搭建前的一些技术decision: 微服务的通信全部基于REST(REST服务的搭建不是重点,为了省代码,使用我的小框架@jinyexin/core)…
谈谈函数式编程
Comments
从50年代的 Lisp 开始,函数式编程已经存在很长时间了。(在过去的几年里的Clojure、Scala、Erlang 和Elixir)。那么,函数式编程也就是FP(Functional Programming)到底是什么?和命令式编程(Imperative programming)有什么区别?有什么有点和缺点?如果真的像FP鼓吹者说的那样完美,为啥实际应用中不多见? 什么是函数式编程? 要回答这些问题,我们要先来看看函数式编程的定义。像OO(面向对象)的编程思想一样,FP(函数式)编程也只是一个programming paradigm而以。这个想法大致来说,包含两点: 一切都是纯函数 没有共享状态、可变状态、没有副作用 用纯函数构建一切 第一条很容易理解,函数是一等公民,你可以把函数赋予变量,也可以把函数作为参数传给其他函数或作为返回值。 对于第二条来说,我们写程序中经常用到的常量(let a = 0;)就不存在了。有些介绍FP的文章笼统的描述为FP里所有的变量都是final的,这其实是误解。FP里面没有变量的概念,…
API设计,从RPC、SOAP、REST到GraphQL(四)
Comments
tags:技术
前两篇: (一)前言&RPC (二)SOAP (三)REST (四)GraphQL(Next?) Talk is cheap. Show me the code. 先放个GraphQL的代码,在这里。(竟然是一个月前的代码了,写文章还是不能拖拉啊) 如同上一篇文章所说,REST是现在API设计的绝对主流思想,但也不是没有缺点的。比如太多的HTTP请求,抓取了过多的信息等。当然,现在有好多各种各样的框架、协议尝试对REST做一些改进。比如HAL、Swagger、OData JSON API。(以上几个都可以花时间浏览下,还是很有启发的) 还有很多小的工程或者项目的内部工具都是为了更加爽快的使用REST而诞生的。我不想一一列举这些工具,这里只是从设计角度,假设我们自己要设计一个基于REST的改进工具,我们会对这个工具有那些要求: 1.最小化HTTP请求数量 每个HTTP请求都是有代价的,握手、延迟、解析甚至如果在移动平台上过多HTTP请求对手机电池的消耗都是必须考虑的。理想情况下,…
API设计,从RPC、SOAP、REST到GraphQL(三)
Comments
tags:技术
前两篇: (一)前言&RPC (二)SOAP (三)REST(now) 接下来,在RPC和SOAP之后,我们迎来了REST。 REST(Representational State Transfer),实际上一般指的是RESTful的架构风格,是由Roy Fielding在2000年的这篇著名论文里提出的。 那REST到底对API设计做了什么改进呢?先来回顾一下前面两篇文章里介绍的RPC和SOAP,RPC类似于系统和系统之间讲黑话,SOAP改进了RPC,使之有了统一“普通话”。但是“普通话”是不是最优解呢?我们来看一个调用远程系统创建用户时可能遇到的接口名: createUser() //很平常的命名 insertUser() //也可以接受 chuangjianyonghu() //别说你没看到过 chuangjianUser() //土洋结合 cjyh() //中文拼音首字母缩写 api123321() //恩,保密工作做的不错? 根本就有无穷种可能性好伐?那么,我们能不能有一个接口的规范?比如,对于任何系统,暴露出来的创建用户一定是createUser?REST以一种革命性的抽象,…
API设计,从RPC、SOAP、REST到GraphQL(二)
Comments
tags:技术
SOAP is what most people would consider a moderate success. -- Don Box <A Brief History of SOAP> 上一篇:前言&RPC (二)SOAP(90s) RPC之后的下一个主流API设计风潮就是SOAP了。 SOAP(Simple Object Access Protocol)由Dave Winer, Don Box, Bob Atkinson, 和 Mohsen Al-Ghosein 在1998年为微软所设计。 这几个设计人员敏锐的观察到了RPC的最大缺陷:没有统一标准。使用RPC就好比发明团伙内部的黑话一样,更精简、更加保密、更加可定制,坏处就是要求双方(sender,…