The Go Blog

2018 IT Feature ( New Tech )

bantana
1 January 2018

Cloud Native 概念

  • 微服务
  • 基础架构

2018 年 New Tech 展望

  • typescript(vue)
  • GraphQL
  • Service Mesh ( lstio )
  • k8s ( kubernetes )

更高阶层面的分层

  • 业务服务
  • 微服务技术
  • 容器管理平台

先从最底层看起 ( 容器管理平台 )

k8s ( kubernetes ) (开发语言 go)

在底层容器平台这场竞争中,K8S,Mesos,Swarm, ...etc. k8s已经胜出。

未来我们不需要aliyun, qcloud,ucloud, amazon, azure...etc.这些构建在openstack上的ecs, 我们需要能构建各种云平台的技术和产品。

k8s 是符合cloud native设计的

使用k8s, 需要对 - pods - services - replication controller 等概念了然于心.

k8s 的基础之一 containerd ( golang )

containerd ( getting started )

connecting a k8s or a containerd:

import (
  "github.com/containerd/containerd"
  "github.com/containerd/containerd/cio"
)
func main() {
    client, err := containerd.New("/run/containerd/containerd.sock")
    defer client.Close()
}

create a container:

redis, err := client.NewContainer(context, "redis-master")
defer redis.Delete(context)

ula, err := client.NewContainer(context, "mq_ula:latest")
defer ula.Delete(context)

mq_web, err := client.NewContainer(context, "mq_web:v8.2.1")
defer mq_web.Delete(context)

The 8 Fallacies of Distributed Computing (1)

在90年代,来自Sun Microsystems的Peter Deutsch等人发表了“The 8 Fallacies of Distributed Computing”。Peter列出了人们在使用分布式系统时容易做出的几项假设。Peter指出,如果只是针对原始网络架构或理论模型,那么这些假设或许是对的,但在现实世界中绝对不是。

  • 网络是可靠的
  • 没有延迟
  • 带宽是无限的
  • 网络是安全的
  • 拓扑结构不会发生变化
  • 存在网络管理员
  • 零传输成本
  • 网络是同质的

The 8 Fallacies of Distributed Computing (2)

工程师不能忽略这些“谬论”,他们必须在开发当中处理这些问题。

微服务架构是更为复杂的分布式系统,它给运维带来了更多挑战。我们之前已经做过一些详细的讨论,下面是之前讨论内容的要点。

  • 快速分配计算资源
  • 基本的监控
  • 快速部署
  • 易于分配的存储
  • 易于访问的边界
  • 认证和授权
  • 标准的RPC

Service Mesh

这里面很多软件,技术点和概念可能很快就过时。

Service Mesh (定义)

我们看一下中文翻译,首先服务网格是一个基础设施层,功能在于处理服务间通信,职责是负责实现请求的可靠传递。在实践中,服务网格通常实现为轻量级网络代理,通常与应用程序部署在一起,但是对应用程序透明。

Service Mesh的定义是由Linkerd的CEO William Morgan 给出来的。Linkerd是业界第一个Service Mesh,也是他们创造了Service Mesh这个词汇的,所以这个定义比较官方和权威。

这个定义在2017年初正式提出,目前已经进化3代。也就是说后面的基于lstio的技术相对于 spring cloud,相当于高3个纬度的降维打击!

Linkerd和Envoy都加入了CNCF,CNCF在Cloud Native的地位,就跟二战后联合国在国际秩序中的地位一样。

Service Mesh ? why ?

(next)

Patten: Service Mesh

Service Mesh's Control Plane at our bird's eye view diagram.

Service Mesh 后续问题

目前的Service Mesh解决了运维问题,但是服务后续治理的问题没有处理好,留待后续的进化。

Service Mesh ? lstio

lstio (下一代的微服务) ( 还是 golang )

大前端 ( vue & typescript )

个人理解:

vue.js angular.js react

vue ( 最小结构进化 ) , 其他2个都存在过度设计。 未来加入业务开发的人员中vue最容易培养和上手,

  • typescript ?

无论javascript如何进化, ES5,ES6(ES2015),ES7(ES2016),ES8(ES2017),ES.Next,typescript都在后面等着。

前端原生开发和基于大前端web开发技术的竞争。

纯业务逻辑目前低成本的方案就是大前端技术,一套技术解决web, mobile, pc三个环境。

原生变数?

以apple生态进化来看,硬件技术的进化加速的时候,原生的技术就能发挥最大价值。因为设计和用户体验已成为产品的一个基本需求。

还有交互技术变革的时候,web技术都不一定能跟得上变化。

语言层面

操作系统内核:

c, rust, swift

云平台:

go, rust, swift

前端、原生:

html, css, javascript, swift, [go]

应用服务(已经演进为libs的竞争了):

java, go, nodejs, ruby on rails, php, python

其他小众领域:

全部

未来你在哪个层面?

thinking...

Q & A ?

Related articles