程序员必点技能
1.DNS
公网DNS
局域网DNS(coreDNS)
2.负载均衡
- 2.1 基于硬件-F5
- 2.2 基于四层- lvs
- 2.3 基于七层
- nginx
- openresty
- apisix
3. 网关
- apisix
- zuul
- ingress
3.缓存
客户端缓存
CDN
服务端缓存
- 服务端一级缓存 caffeine,guava
- 服务端二级缓存 redis
4.CI/CD
CI
- trigger
- 包的形式:image,jar,war
- 二方包打包规则
CD
trigger
runtime:vm,k8s,app service(pass),servless(sass)
灰度:金丝雀,蓝绿,ABTest(功能性)
- 流量接入规则:ip,userId,流量百分比
private dns/public dns规则
5.架构风格
单体架构
soa(很少很少)
微服务架构(这里包含了一整套的解决方案,服务注册发现,rpc,服务治理等等)
解决方案
* springcloud netfix
- springcloud alibaba
- k8s
service mesh
解决方案
* istio
5.中间件
消息队列
- rabbit mq
- kafka
- rocket mq
- 云产品:Azure event hub,Azure service bus
任务调度
- xxl job
- elastic job
配置
- apollo
- nacos
- 云产品:Azure configuration
6.sql
olap
- hive
- 云产品:Azure Synapse Analytics
oltp
sql
- mysql
- oracle
no sql
- mongo
- es
new sql
- spanner
- tidb
7.troubleshooting三剑客
log
采集->传输->存储->查询
常见解决方案:
- filebeat->kfk->logstash->es
- 云产品,syslog(阿里云),Log Analytics workspaces(Azure)
trace
实现一个trace并不复杂,重点在于怎么将上下游的日志串起来方便排查问题
trace,span
常见解决方案
- pinpoint
- skywalking
monitor(时序)
monitor里面的数据按照时间窗口来聚合,将一个个时间窗口的数据进行count,avg,sum等等聚合,聚合出来按照时间进行排序,就形成了mertic
- 监控对象
- 基础设施
- cpu
- memory
- io
- 应用
- http requests code
- http lantency
- jvm
- 自定义mertic
- 解决方案:
- prometheus
- 云产品,appinsight(Azure)
alert
重点在于如何定义slo等级
- 基于日志
- 基于mertic
8.常见解决方案:
identity(user and system)
authencation(Oauth)
authorization(rbac)
order
multi-level
* order
- item
- list
price
* order price
- item price
- list price
shiping
* barcode
- delivery
- …
9.安全
存储:
- 密钥存储
- 证书存储
- private/public key存储