说一说API Gateway,一切服务的入口。也称其为API Management,这是一个比我之前想象还要大的系统,这篇文章我尝试做一些总结。
下面提到的API Gateway 和 API Management 将作为等同名词,除非我特殊说明。
什么是API Gateway?
它主要做什么事情,提供什么功能
简单说就是将后面的微服务的API统一暴露出来的网关的就是API Gateway。
他应具备一下能力:
My journey of life
公司终于要重构一个非常古老的项目了(之前我建议了好多次,也讨论了好多次,这次终于动工了),将其按照微服务方式搭建,采用spring cloud框架(之前已经在其它项目中使用了很久)
很期待此项目可以顺利实现,可以支撑未来的业务发展,然而这一次稍微来的晚了一些,我就要离开了。
走之前我还是站好最后一班岗,把新版工程的微服务架构搭建一下,并实现统一gateway入口路由和oauth认证逻辑还有Member用户中心微服务中必要的接口,算是遗产了。
按照我的习惯,只要是全新的项目,我将尽可能更新之前使用到的技术。
由于之前我们使用的是Eureka作为注册服务,而它在2.0宣布闭源,这个对今后会带来什么影响未知,所以我决定将新版工程架构注册服务迁移到Consul。
这不就遇到问题了……
折腾了许久,终于在我的苹果系统上安装上了kubernetes(k8s),可以开始实战了。
由于国内网络限制原因,你想安装Google资源下的k8s十分困难,你需要VPN,比较简单直接。
开始在Ubuntu Server上折腾了一下,有点麻烦,而我主要是想体会一下使用效果,最后还是决定采用Mac OSX下Docker中的k8s试试,当然它的安装也需要VPN工具。
通过Docker内部自带的k8s安装,简单方便,不需要考虑minikube和virtual box或者其它虚拟化驱动(这里就直接跳过了,毕竟我也没有深入研究)
安装后的k8s是但节点环境,所以默写细节功能与集群有差别,这个我需要慢慢体会。
晴天我的霹雳~~~~
今天在MacOS下玩Kubernets,无意间发现Java 11的资源包变成的OpenJDK,去找Oracle版本时看到这个说明:
Oracle’s Java 11 trap - Use OpenJDK instead!
文章重点就是,Java 11的License是商业授权,用于商业活动时,你是要付费的,不是免费的。
Oracle License原文可以参见这里:Oracle Technology Network License Agreement for Oracle Java SE
Further, You may not:
就是这句话。 根据上文博主的说法,之前的license肯定都是免费的(我之前没有特别留意过),现在商业用途竟然需要收费了。
关于Spring Cloud支持的注册发现服务,一直想了解一下对比情况,今天无意间发现这个对比文章,简单直接,可以给你一个直观的初步认识。
转载原地址:服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
这里仅贴出总结表格,稍作调整。其它内容请参见原文
Feature | consul | zookeeper | etcd | euerka |
---|---|---|---|---|
服务健康检查 | 服务状态,内存,硬盘等 | (弱)长连接,keepalive | 连接心跳 | 可配支持 |
多数据中心 | 支持 | — | — | — |
KV存储服务 | 支持 | 支持 | 支持 | — |
一致性 | raft | zab | raft | — |
CAP | ca | cp | cp | ap |
使用接口(多语言能力) | 支持http和dns | 客户端 | http/grpc | http(sidecar) |
Watch支持 | 全量/支持long polling | 支持 | 支持 long polling | 支持 long polling/大部分增量 |
自身监控 | metrics | — | metrics | metrics |
安全 | acl/https | acl | https支持(弱) | — |
Spring Cloud集成 | 已支持 | 已支持 | 已支持 | 已支持,2.0闭源 |
Scrum一个非常好的项目管理方式(方法论),我十分喜欢,但是,项目中使用需要很多客观条件支持,例如公司环境,队员素质等等。
无论怎样,个人十分推荐在项目中尝试该管理方式。虽然,我不是Scrum Master(本人只有PMP证书),但是我一直对此深入学习,并尽可能多的将其应用到实际项目中。
今天我说一下Scrum中的五个事件
今天总结一下金融交易市场中订单类型(交易指令类型)
在金融市场中有很多的订单类型,在不同的市场(地区或者交易品种)针对不通的用户(散户还是券商等)可以使用的订单类型是不同的。
订单类型的不同主要看券商和交易所是否支持(也有在交易客户端实现的,个人感觉那个就不要考虑了)
这里仅仅将已知的订单类型列出,进行必要的总结。 买卖方向、开仓平仓这些内容直接跳过,我就不说了哈~
先说从价格方面都有什么类型
这两个放在一起说吧,应该是最常见和常用的两种类型,无论是股票、债券交易还是衍生品交易,我都可以看到这两种类型。
市价单(Market Order):是以当时市场价格成交的订单,不需要自己设定价格,可以使得订单快速成交。
限价单(Limit Order): 需要指定成交价格,只有达到指定价格或有更好价格时才会执行。常为默认类型
很简单,很容易了解哈,市价单的心声,我就是要买入/卖出 价格不在乎,现价单的心声是:我先准备一下,价格到位,买入/卖出在执行
事务,很基础的概念,但有很多细节是大家忽略的或者平时很少注意到的。这里总结一下:
实验工程 (这工程的实验代码尚不完整,再更新看心情了😛)
先说ACID,工程里说自查度娘,还是算了吧,我还是解释一下吧,度娘不靠谱
分布式锁,在微服务,多服务器水平扩展以及高并发的场景下,要保证共享资源正确处理,这个锁很重要。
我了解到了三种实现方式:
三种方式各有优缺点,在恢复此博客之前我已经实现了基于Redis版本的分布式锁,现在把另外两种加以实现,并做相应的对比。