程序员必点技能

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

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存储