TypeScript 学习之路: 第一天

数值类型:

数值声明:

let name: string = `nextkara`

  1. 布尔型 boolean
  2. 数字 number
  3. 字符串 string
  4. 数组  number[]
  5. 元组(限定数据类型的数组|已知元素数量和类型的数组)

let x: [string, number]

x = [‘hello’,  10]

  1. 枚举(限定范围的数值)

enum Color {Red, Green, Blue}

let c: Color = Color.Green

  1. Any (可变数值类型)
  2. Void(没有任何类型)

function nothingOutput(): Void {

console.log(‘hello’)

}

# 上面的函数是没有返回值的, 在函数后面声明之后表示此函数无返回值

 

  1. Null & Undefined
  2. Never 永不存在的值的类型.

// 返回never的函数必须存在无法达到的终点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function error(message: string): never {

throw new Error(message);

}

// 推断的返回值类型为never

function fail() {

return error("Something failed");

}

// 返回never的函数必须存在无法达到的终点

function infiniteLoop(): never {

while (true) {

}

}

Kong 的架构研究与探索

Kong作为比较受欢迎的API网关, 基于OpenRestry , 能充分发挥Nginx epoll 模型的强大并发支持, 并且使用Lua 来对模块进行配置与热插拔.

 

目前使用的是Kong的最新版 1.3.0 , 然后使用的是PostgreSQL用作配置存储, 目前是可以不在后端采用数据库的, 直接使用配置文件来组织和管理规则~

 

首先是Kong的几个关键的概念:

Kong是什么?

Kong的组成?

Kong能干什么?

Kong的扩展性与高可用?

 

第一个问题在开篇已经介绍了, 用作API 网关.

既然是做到网关的功能了, 那网关的关键的功能应该都一应俱全.

比如API转发请求, API注册, API权限控制, API后端负载均衡, API使用统计, API限流.

这些功能都是原生提供了的, 需要在配置的时候, 进行相应的配置并启用插件来实现.

 

Kong的组成, 首先从软件层面来看, 我的Kong 是采用rpm包进行安装的, 也就是预编译好的二进制包, 安装完成后, 进行对应的配置即可启动服务.

为了方便研究和管理, 我还搭建了一个Konga的 图形管理界面. 用于快捷的操作Admin的API来对Kong 进行管理.

新手最好也弄一个这个Konga ,因为光看文档的话, 不一定列出了所有的参数. 在Konga里面的话, 就把能配置的参数都一一列出来了. 虽然看起来上手难度更加高, 但是对于新手的操作的话, 更加友好.

服务启动之后, 主要还是Nginx, 还有用于存储配置的PostgreSQL 数据库.

使用默认的情况下, 进程会监听8000端口和8001端口, 8000端口主要处理API请求, 8001端口的话就是Admin API所监听的端口.

几乎所有的管理都是通过Admin API接口来进行处理的.

 

Kong的内部逻辑组成

主要由以下几个部分组成:

Service

Route

Consumer

Upstream

Plugin

Certificate

 

 

按照发起一次API请求

Client -> Gateway -> Back-end Service 的顺序来简要介绍一下这几个内部的逻辑组件

 

  1. Consumer/anonymous 用户/匿名用户

对于API的访问, 我们需要对无需验证的接口开放访问, 就需要开放匿名用户访问接口, 此处的anonymous 就是用作无需授权进行访问Route

而对于内部接口和计费接口, 需要验证身份进行访问的话, 就需要在内部设定好Consumer 这个角色, 配置好验证方式. 并授予合适的权限给Consumer.

确保Consumer 能访问获得授权的接口.

 

  1. Route: Client 通过匿名或者授权的方式访问到了 Gateway之后,  首先进到的是Route,

Route 定义了各种路由规则和权限来进行访问, 与它关联的组件有 Service, 在匹配到合适的路由规则之后, 会对请求进转发.

 

  1. Service: 匹配到Route之后, 会进入到Service里面, Service里定义了转发到后端的Host, Path, Port 等这些关键信息, 按照Service内定义好的规则将请求转发.
  2. Plugin: 在请求接受到转发全程可以通过插件来实现特定功能.
  3. Certificate: 验证凭据

 

 

Kong能干什么?

OpenRestry 的强大支持下, 能支持相当高的并发访问, 而且加上由Lua语言编写的Kong插件, 新加的配置能立马应用到Kong上面. 有了这些工具的加成,

对于服务API的管理如虎添翼.

 

Kong 服务搭建与图形界面安装

由于需要使用Kong来进行API治理, 在内网搭建了Kong的测试环境

 

使用的配置都是最基础的配置

 

主要步骤:

  1. 检查PostgreSQL 是否可用并服务启动
  2. 使用官方RPM包安装
  3. 配置基础配置进行启动
  4. 安装UI界面

 

使用官方RPM包安装

 

首先下载Kong的 安装包

 

https://bintray.com/kong/kong-rpm/download_file?file_path=centos/7/kong-1.3.0.el7.amd64.rpm

 

下载完成后, 直接使用yum 命令进行安装

yum install kong-1.3.0.el7.amd64.rpm

 

配置基础配置进行启动

 

安装完成后, 文件主要有如下几个目录需要注意和操作的

 

程序主要的目录

/usr/local/kong

配置文件目录

/etc/kong

 

/etc/kong

主要配置:

 

admin_access_log = logs/admin_access.log

admin_error_log = logs/error.log

admin_listen = 0.0.0.0:8001

anonymous_reports = on

log_level = notice

nginx_daemon = on

nginx_user = nginx nginx

nginx_worker_processes = auto

pg_database = kong

pg_host = 10.10.0.8

pg_password = kong1234

pg_port = 5432

pg_timeout = 5000

pg_user = kong

plugins = bundled

prefix = /usr/local/kong/

proxy_access_log = logs/access.log

proxy_error_log = logs/error.log

proxy_listen = 0.0.0.0:8000

real_ip_header = X-Real-IP

trusted_ips = 0.0.0.0/0,::/0

 

配置好之后, 使用 kong check 检查配置是否正常

 

没有问题的话 执行 kong migrations bootstrap 来初始化数据库

 

上步正常运行后, 执行 kong start 运行 Kong

 

安装UI界面

 

由于启动了的Kong服务只是一个简单的接口形式的服务, 如果想方便的管理和操作API和路由策略的话,可以使用Konga 这个开源项目来进行方便快捷的管理

 

配置好软件的基础环境

 

Konga 依赖 NodeJS 环境, 所以需要提前下载下 NodeJS 的二进制包并安装到系统上

 

https://nodejs.org/dist/v12.10.0/node-v12.10.0-linux-x64.tar.xz

 

解压后配置好环境变量

 

这边我安装解压到了 /usr/local/nodejs/ 目录下

 

配置环境变量为:

 

export PATH=$PATH:/usr/local/nodejs/bin

 

安装完成后, 使用npm 安装下cnpm (为了后面进行环境初始化的时候顺利进行)

 

从github 上拉一份最新的代码下来

 

git clone https://github.com/pantsel/konga.git

 

 

克隆完成后, 进入konga 的目录下, 执行 cnpm i命令

 

命令正常执行完成后, 执行 cnpm start 启动 konga

 

首先进入会要注册一个管理员用户, 按照需要填写完成后再登录到konga里面, 配置好kong的admin 的url 就能, 就能愉快的使用Kong的图形管理界面了,

 

 

 

PostgreSQL 搭建与简单配置文档

由于需要使用Kong, 数据库存储需要选用PostgreSQL 来做数据存储, 所以需要在Linux服务器上部署PostgreSQL

 

下面是简单的PostgreSQL 部署步骤
主要分为如下几步:
1. 添加PostgreSQL 软件源
2. 下载安装PostgreSQL 12 客户端和服务端
3. 调整配置与启动服务
4. 创建用户和对应数据库
5. 登录验证数据库

添加PostgreSQL 软件源

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum makecache

下载安装PostgreSQL 12 客户端和服务端

yum install postgresql12 postgresql12-server postgresql12-devel

调整配置与启动服务

由于默认PostgreSQL 都是监听的127.0.0.1的端口, 所以如果局域网需要访问PostgreSQL的话, 就需要修改本地监听端口然后然后设定好相应的权限

/var/lib/pgsql/12/data/postgresql.conf

listen_addresses = ‘0.0.0.0’

/var/lib/pgsql/12/data/pg_hba.conf

host all all 10.10.0.0/24 md5

创建用户和对应数据库

sudo su – postgres

createuser kong -P

createdb kong -O kong -E UTF8 -e

登录验证数据库

psql -h 10.10.0.8 -p 5432 -U kong -W kong