这里说的配置是指系统运行所需的各种参数,比如web.config中的各种配置值。
这里有2个问题:
1.大型网站的配置是存放在哪里,如何读取?集中管理,还是各个子系统自己管理?
2.这些配置若要修改,如何使它立即生效而不造成访问停止?那么多服务器,如何一起修改?
各位可以谈谈你们平时一般是如何管理配置的,遇到什么问题,也可以谈谈知名大网站是如何做配置管理的。
配置管理
------解决方案--------------------
大部分配置参数是存储在数据库中的,也有一些会专门由配置服务器来远程提供配置参数。
配置参数要看什么类型,非底层参数,可以在管理界面更新配置后发送通知同步提醒所有服务。
如果是底层参数,就需要关闭服务再修改,但这种修改未必需要对外停止服务。比如你有100台服务,你可以停20台,修改参数后启动;再接着改20台,就这样。即便是碰到要升级发布,如果不是重大变更,一样可以这么做。
------解决方案--------------------
这个需要啥案例?Weblogic集群环境下的AdminServer就承担了配置服务器的职责。
尽量消除XML配置,这个是设计阶段就要解决的问题。一般来说经常需要变化的配置,业务相关性更高。
第三方组件所使用的配置,这个要看什么类型的组件,可以将配置文件整个存储到数据库中,然后以InputStream的方式供组件初始化,但动态更新就要依赖第三方组件自身是否支持了。所以:要么所使用的第三方组件比较底层,需要修改配置的可能性很低;要么就干脆不用这个组件。
另一种招数就是用类似于OSGi的手段,组件化可拆卸。有新版本上来了,就新版本新配置在线加载,然后卸载旧版本。
------解决方案--------------------
可以专门的搞配置服务器, 或者用开源的zookeeper也可以。
------解决方案--------------------
组件化对开发人员要求太高。一不小心就内存泄漏。
OSGi的学习成本很大,指望国内大量的普通码农掌握不现实。
还是停服分批更新可行性好点。
------解决方案--------------------
首先有个东西叫负载均衡,1个网站挂N个节点机。就先说来100个节点机吧
网站有一个后台程序,他会将运营修改的内容修改到服务器内,然后推送给审批人员
审批人员看到后确认能上线,则将信息发布出去(也就是点几个按钮的事情,发布程序都写好了)
此时新内容由后台的服务器发布到前台(也许是及时发布也许是定时发布)
发布后如果是内容,那么各个节点机获取到的信息将同时更新
如果是功能
那么将100节点机分组,例如10台一组进行更新
当更新后就会重新挂回去,然后继续更新下一组,直到更新全部完成
在有些网站你会看到他们的域名为 S1.XXX.COM NEWS3.XXX.COM
这个是他们用来方便测试的,可以通过域名来指定使用那台或那组节点机