当系统的数量越来越多的时候,提供的各种系统接口基本都写在配置文件之中,从而在进行接口升级的时候,关联的系统总是要进行同步升级。。。强耦合了解一下,在程序的世界中,一般关系比较好的,我们都要想方设法拆散她们。。。Emmm,就是这么残忍。。。
风言风语
在微服务的世界中,各种各样的restful api,今天我要升级,明天我要变更,大大小小的服务几百个,从而就有了服务中心,自动服务发现了解一下。。。
服务中心主要用来解决系统之间的强耦合关系,而且系统之间的调用基本上是同步调用的。
所谓的自动服务发现,只不过是不需要修改配置,就发现了服务,调用了服务。。。换一个说法就是,相当于有一个地方动态的读取配置,从而能自动去调用服务。
在服务中心中,分为两种:
一种是名称总线系统,也就是A系统需要调用某个服务的时候,只要请求服务中心即可,服务中心会自己去调用远程的服务然后得到响应,最后由服务中心响应给A系统。(ESB企业服务总线)
一种是名称服务系统,也就是A系统需要调用某个服务的时候,去服务中心获取到远程的服务ip+port,然后A系统自己发送请求获得响应(和DNS类似,只是为了解析出IP和端口)
服务发现,你在使用服务的时候,其实你也在提供服务。。。这种调用的方式,像不像LVS的几种调度方法。。。企业服务总线的模式,一挂全挂;名称服务模式,如果有缓存,还能抗一会儿~~~
使用consul搭建服务中心
服务中心和配置中心感觉有点像,不过也看站在什么样的角度来看,眼瞎,看不清楚。。。
1、 运行consul容器,提供服务中心(此处使用单节点)
2、 8500端口提供了默认的http访问的ui接口,从而可以进行界面访问
3、 注册服务(注册了一个服务python,其中有两个服务器提供服务,在后面根据服务的名称获取到服务提供者的ip和端口,在进行调度的时候,可以在提供的SDK中提供相关的调度算法,从而客户端只需要配置sdk和服务注册中心的地址就好)
4、 界面查看注册了服务,并且能进行健康检查
用脚指头思考
在不知道何为服务发现的时候,苦苦思索,为什么要服务发现,发现服务是为了干啥,概念上的玩法。。。存在是为了解决什么?引入又会带来什么样的新问题。。。
听说最近AWS宕机了,因为换了一个数据库。。。有胆量,有魄力,最终。。。会成长为一个强大的数据库。。。
用软件工程的思想解决运维的问题。。。那么什么是软件工程的思想。。。最近和人吹牛逼,也没得出什么新奇的结论。。。感觉。。。少了一层精髓。。。
写一片代码,简单的调用几个接口,简单的复制几个方法,简单的写成几个类。。。这有何意思???
写代码的时间其实很少,在整个软件工程的生命周期中占用的时间少于百分之三十,实现一个功能?从需求开始。。到设计,到编码,到测试,到运维,到下线。。。很长的路。。。
一个脚本如何演变?写成一个方法,能够复用;写成一个类,能够接受扩展。。。那么然后呢?
使用的规模逐渐变大,反过来衍生需求,进行代码改进,用更好的方法实现更高的性能,更高的扩展性,更好的可用性。。。
写完了就忘了?一次性的脚本并没有什么卵用。。。只有进行组合,重组。。。才能适应各种各样的场景。。。
Emmm。。。脑子漏风。。。1024到了,各位的头发还在么。。。哈哈