DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

原文链接1

原文链接2

文章一:

  • spring boot + dubbo
  • docker
  • jenkins
  • 关于发布服务和引用服务,如何使用

文章二:

微服务2.0:容器,PaaS,Cloud Native,gRPC,ServiceMesh,Serverless

微服务基础架构

微服务的体系结构

同时,Spring也支持Swagger契约编程模型,

Motan,gRPC

Spring Cloud体系的话,使用Eureka,同时,Consul也不错

基于nginx/openresty的Kong的服务网关

配置中心的Apollo

OpenTSDB,做Metrics的监控,Argus配合使用,

InfulxDB以及Grafana,

服务容错类型:

Hystrix,封装组件,进行容错,?(如何使用?)

kafka之上的,hermes加入了企业的治理能力,

针对分布式访问数据层部分,MyCAT,分表中间件,

原文链接

副本以及纠错码的方式,副本读写效率高,但浪费空间,

EC纠错码,Erasure Code,使用RS(Reed-Solomon)码算法对原始数据进行编码,在原始数据中加入redundancy,之后将编码文件分片存储到volume中的相应bricks中

RS(Reed-Solomon)码有两个参数n和m,记为RS(n,m),n代表原始数据块个数,m代表校验块个数

Glusterfs文件系统模块化的通过各种Translator(一种强大的文件系统扩展机制)链接起来实现各种功能,各Translator在需要运行时通过动态库的方式加载。其中Cluster translator 是Glusterfs实现存储功能的核心,实现了DHT、AFR、EC等重要功能。

Usable size = Brick size * (#Bricks - Redundancy)

0< redundancy<#Bricks /2

计算方式:

其中,#Bricks表示每个Dispersed Set中的brick总数,例如:

1)3 bricks,创建Dispersed Type为1*(2+1),存储磁盘空间利用率66.7%;

2)10bricks,创建Dispersed Type为2*(4+1)的卷,存储磁盘空间利用率为80%。

在面向对象的编程中,a protocal or interface is a common means for unrelated objects to communicate with each other

why do we use interfaces?

  • writing generic algorithms
  • hiding implementation details
  • providing interception points

interface need runtime checks

The bigger the interface, the weaker the abstraction

abstract data type

原文链接

There are objects in Go that have to be initialized, for example channels and slices immediately come to mind. You’ll have to call make to set that up.

“The make built-in function allocates and initializes an object of type slice, map, or chan (only). Like new, the first argument is a type, not a value. Unlike new, make’s return type is the same as the type of its argument, not a pointer to it.”

关于constructor部分?

value receivers

1
2
3
4
5
6
7
type Person struct {
name string
}

func (Person) New(name string) *Person {
return &Person{name}
}

And to use such a constructor, you would invoke Person{}.New("Tit Petric") and end up with the initialized object. We can in fact reason better about the code we are writing, because we can asume that we’ll end up with a Person object (or a pointer to it), because that’s what we start with

there’s no performance or memory impact from using value receivers over usual function constructors

1
2
New         2000000     754 ns/op     0 B/op      0 allocs/op
Person.New 2000000 786 ns/op 0 B/op 0 allocs/op

原因在于:The constructor code is completely the same, and in both cases, the functions get fully inlined, so whichever format you prefer to write results in completely the same assembly code output

conclusion

While value receiver constructors do feel slightly awkward, it’s as close to analogous copy of constructors from other languages. While in PHP the constructor would be invoked when you call new Person(...) and would only return objects of that type, Go actually allows you to go beyond that with Person{}.New().

拖了很久的2017年总结,都3月份了,要抓紧时间了。。治好拖延症。。

自己的事情,算是告一段落?带回了家,后续是否是好结果,就看个人,万事还在不确定当中,或许自己不行呢。。哈哈。。

平衡在这一年,很没有做好,很多想做的事情都没有去做成。。值得警惕

工作上:

  • 数据和架构上做了一些东西出来,在实时性上做出一些东西出来,包括从收集到存储和查询。
  • 夸机房的服务,算是落地,不过后面的文档,要抽时间总结一下。
  • 技术上升到了4,算是一个好结果吧
  • 在开源上,感觉投入不够,有些软件明明可以参与进去的。。

客户端:

  • 小程序写了一半。。关于存钱计划部分,没有很好地坚持下去。。

blog:

  • 技术上的总结和一些闲笔,突破了150的大关。。
  • 不过每周的总结,拉下来,这点后面要补上
  • project52开了几个头,就没弄下去。。

看书上:

  • kindle和豆瓣部分,算是坚持地还行。。
  • 后续要坚持各种书籍的读。。
  • 技术书,感觉看的不够。。

生活上:

  • 成都达成
  • 日本达成
  • 游记要补上。。慢慢回想一下,不然都不记得自己玩了什么地方

身体锻炼:

  • 整个人算是懒了下来。。该坚持的锻炼也没坚持下去。。
  • 半马什么,也没什么指望了。。

摄影和吉他:

  • 摄影部分,看了一部分,没有坚持下去。。
  • 吉他部分,算是吃灰了。。哎。。

电影和看书部分:

  • 电影上还算不错,多做一些记录,静下心来看。。
  • 看书上,还是太少。。后面要多读。。

投资上:

  • 稀里糊涂就买了房子,算是实现了自己的第一个诺言

本来说好的把时间当成朋友,结果成为了时间的奴隶,被时间拖着走。。这种感觉真糟糕。。