Skip to content

aaronbai/go_learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 

Repository files navigation

Go_Learning

GoAwosome

  1. WebFrameWork
  2. FunnyRepos
  3. Logs

Books

  1. 《Go实战开发》
  2. 《Go Web 编程》
  3. 《Go Commamnd Tutorial》
  4. 《Go语言圣经》
  5. 《Effective Go》

Geek

  1. astaxie

微服务和Go语言应用

微服务关心什么?

  1. 高可用
    1. 负载均衡(seesaw, caddy)
    2. 服务注册与发现(etcd, consul, serf)
  2. 易扩展
    1. 应用无状态(tyk, fabio, valcand, traefik)
    2. 异步消息(NSQ, NATS)
    3. 标准接口(gRPC, HTTP)
  3. 可实施
    1. 入门容易
    2. 部署方便(docker化)
  4. 易扩容
    1. 分布式调度(k8s, swarm)
    2. 机器扩容
  5. 可追踪
    1. 服务器监控/告警(Prometheus, open-falcon, grafana)
    2. 日志分析(Beats, Heka)
  6. 微服务框架(beego, go-kit, go-micro, gin, iris)

Important

  1. 变量逃逸
  2. GPM模型
  3. 内存管理
  4. Goroutine调度
  5. 通道
  6. 闭包
  7. 接口、反射
  8. 测试
  9. 版本管理

Senior

  1. tmalloc内存管理
  2. GC 三色标记、写屏障

编译

  1. go build -race 竟态检测
  2. go vet 语法检测

重要区别

  1. 多CPU利用模型: 多进程->多线程->GPM
    1. 通讯模型: 共享内存->锁->通道 sharig memory by communication
  2. 网络模型
    1. 多路复用+异步IO->Goroutine
  3. 编程模式
    1. 接口式编程
    2. 反射、内嵌等实现
  4. 内存管理
    1. GC
    2. 变量逃逸

Releases

No releases published

Packages

No packages published