月度归档: 2022 年 1 月

  • 云上部署的便利性和方案

    云上部署的便利性和方案

    本文首发于:https://developer.aliyun.com/article/863742 修改于发布于本博客

    每年双十一的时候,由于云厂商对于新用户的推广和补贴用户,总会有一些非技术的同事买云主机或者其他类似服务,买了以后也没啥诉求,就想看能不能搭个博客或者小网站自己玩玩。除了个人用户以外,也有一些小公司可能也有类似诉求,需要一个简单的项目管理或者其他企业软件,一般的诉求都是免费或者花钱少,简单,后期别出问题。

    我们就用wordpress举例,考虑最简单的wordpress也需要一个PHP环境,一个数据库,如果还需要https,那还需要一个nginx或者caddy。

    手动安装

    手动其实比较麻烦,php环境、数据库和caddy可以使用apt/yum安装,再从wordpress官网下载最新版本,解压使用。数据库需要手动改下密码,然后wordpress配置连接。这么一套,10分钟肯定跑不掉。

    而且这还是最基本的,还需要考虑端口的开放,应用的安全配置等等。

    Docker-compose方案

    docker是最容易想到的方案。

    一般来说为了方便我都会帮忙用docker-compose的方式部署一下,几行命令就能搞定,配置文件如下:

    version: "3.9"
        
    services:
      db:
        image: mysql:5.7
        volumes:
          - db_data:/var/lib/mysql
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: somewordpress
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: wordpress
        
      wordpress:
        depends_on:
          - db
        image: wordpress:latest
        volumes:
          - wordpress_data:/var/www/html
        ports:
          
    …
  • 谈API网关

    文章首发于阿里云开发者社区:https://developer.aliyun.com/article/862205

    API 网关是位于客户端与后端服务集之间的管理工具/平台。简单来说大致相当于一个反向代理,可以调用并返回结果。

    价值

    API网关并不是必须的,如果处于起步阶段的项目,单体应用还是最直接的,一层Controller就可以解决问题,这个阶段引入过多的复杂性其实没有太大必要。

    但是对于大型应用,特别是微服务化的场景下,API网关可以带来很多价值:

    聚合和解耦

    当用户需要同时访问多个接口的时候,网关可以聚合结果,节约流量。

    网关由于路由规则等比较灵活,可以比较容易的切换网关后的路由,对于一些升级、迁移场景,可以降低影响。特别是业务迭代早期,服务之前的边界和模型不稳定,迭代是极为频繁的。

    非业务功能

    在实际的应用场景中,有很多功能是必要的,但是它不是业务功能,比如限流、降级、熔断等。网关可以用较低代价去实现通用能力,并提供一些通用的模块,比如认证接入等。

    管理

    网关统一了所有对外暴露的接口,也就有条件提供一个统一的管理工具,这样可以给API更统一的管理模型,统一生命周期。

    评价

    评价一款API网关主要看性能和功能,另外个人还觉得和已有生态的结合也是一个考虑点。如果是自建/自部署,还要考虑开源社区的活跃程度和二次开发的复杂度。

    性能测试网上有很多,一般都是使用几台压测机进行施压,观察平均响应时间、吞吐量和响应时间分布。这样测试一般后端都是空接口(没有业务逻辑),无法模拟真实情况下的连接波动等的影响。

    功能的话,大部分流行的API网关功能都是完备的,只要是叫得上名字的,功能都大同小异,这种情况下可以重点关注下监控系统的集成。

    选型

    API网关由于通用性比较强,相对来说选型也比较多。

    常见的开源选择有Kong、Ambassador、Traefik、Tyk等。

    部分开源网关也有商业版/商业支持,如果目前已经上云了,那其实完全可以使用云厂商的网关,差不多都是按流量+次数收费,也有买断式的专享实例,这种按照时长+流量收费。

    对于云厂商来说,API网关属于最基本的功能了,都有提供,但云厂商提供的API网关存在厂商锁定问题,后期切换不容易。

    …