WebAssembly介绍及简单入门
Comments
tags:技术, NodeJS, Javascript
Any application that can be compiled to WebAssembly, will be compiled to WebAssembly eventually. -- Ending's law JavaScript诞生起到现在已经成为最流行的编程语言(之一),背后正是由Web及相关技术发展所推动的。JS应用正在变得越来越复杂(各种前后端技术、扩展到了手机APP、桌面),但这也暴露出了JS的问题: 语法灵活导致开发大型项目困难 性能在一些场景下不如C/C++等其他语言 一些公司研发了各种框架/语言/工具来尝试补救,比较有名的有微软的TypeScript(强类型,提升代码健壮性)、Google的Dart(新的虚拟机直接运行Dart提升性能),Firefox的asm.js(JS 的子集,引擎针对性能优化)。 那么,WebAssembly,于2015年诞生,2018年发布了1.0版本,被预言为未来的标准,现在已经被4大浏览器(FF,…
从零开始的Microservices服务搭建(三)
Comments
tags:技术, TypeScript, NodeJS
Telling a programmer there's already a library to do Something is like telling a songwriter there's already a song about love. -- Enix Jin 前两篇: 从零开始的Microservices服务搭建(一) 从零开始的Microservices服务搭建(二) 微服务,通过把系统解耦成一个个“微小”的服务解决了大型系统的复杂性问题。然而,在享受分布式系统的好处的同时,我们也会面临分布式系统的复杂性带来的问题。比如,如何跨多个微服务管理分布式事务? 第三步的代码在这里 什么是分布式事务? 当微服务架构将大型系统分解为自封装的小服务时,它同时也破坏了事务。 这意味着大型系统中的本地事务现在会被分布到按顺序调用的多个微服务中。 以下是使用本地事务的客户订单示例: 在上面的客户订单示例中,如果用户将Put Order操作发送到系统,系统将创建一个本地数据库事务。 如果任何步骤失败,则事务回滚。…
从零开始的Microservices服务搭建(二)
Comments
tags:技术, TypeScript, NodeJS
So much complexity in software comes from trying to make one thing do two things. And the rest of the complexity comes from making two things do one thing. -- Enix Jin 上一篇:从零开始的Microservices服务搭建(一) 基于微服务架构为软件开发带来了许多好处,包括小型开发团队、更短的开发周期、语言选择的灵活性、服务可扩展性等。 然而,不幸的是,微服务还引入了分布式系统的许多复杂问题。其中第一个挑战就是如何在微服务架构中实现灵活、安全、有效的身份验证(Authentication)和授权(Authorization)方案。…
从零开始的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里面没有变量的概念,…