分布式-在分布式开发时,代码一般要分发到多台机器,大家都用什么来做分发组件?

分布式-在分布式开发时,代码一般要分发到多台机器,大家都用什么来做分发组件?

浮生未歇 发布于 2017-03-29 字数 111 浏览 1347 回复 11

在分布式开发时,代码一般要分发到多台前端机器上,大家一般都用什么来做分发组件?简要说明一下组件的优缺点。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

瑾兮 2017-10-13 11 楼

我一直用的svn的钩子,去勾 rysn。
只有两台同步,如果达到10台,就不知道性能怎么样了。
不过话说回来,部署环境的web,更新周期比较长,影响不大

灵芸 2017-10-05 10 楼

zookeeper和分发无关。 跑分发都可以直接写scp脚本,建立各台机器的ssh信任关系,用scp拷贝过去。 不过这种是全量拷贝同步了,也可以用rsync做。rsync主要你不知道何时结束了。rsync做增量同步。

夜无邪 2017-09-28 9 楼

可以借鉴一下hypertable的同步更新工具,使用的是Capistrano,感觉还比较不错
https://github.com/capistrano/capistrano/

甜柠檬 2017-09-23 8 楼

说一下我们现在的做法
1.svn export整个代码
2.rsync 到发布机 同时把每个文件的MD5值记录后也带上去
3.在发布机点击check

验证正式环境中每个文件的MD5值是否和发布机一样
check哪些文件是新增,哪些是修改,哪些需要删除

4.点击发布后,rsync到各台正式环境

晚风撩人 2017-09-08 7 楼

居然没人回答我的问题,我自己找了一个叫Gearman的东东,在这里记着,改天研究研究,有兴趣的朋友也可以研究研究,如何通过它来完成分发,以下是关于Gearman的介绍:

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。   
Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。   
Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work。   
Worker:请求的处理者,可以是 C,PHP,Perl 等等。   

因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。   
甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

用这玩意来弄弄分发应该可以实现

泛泛之交 2017-08-07 6 楼

我们也是用rsync去同步代码,上百台服务器同时更新也没有问题。你刚才说的gearman是运行时的框架,而现在你关心的是如何做分布式的部署,不是分布式的运行吧?

归属感 2017-08-02 5 楼

可以考虑使用Zookeeper
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

甜柠檬 2017-07-10 4 楼

我是做多台web负载均衡,前端是个NGINX,只负责转发,后端N台apache,N > 10
用svn的钩子每次提交完文件后在内部分别触发后端指定的一个php文件,
php执行的是一个自己用C写的一个提权的小程序,执行一下svn up 某个目录,就做到了全网分发,通过abc参数实现不通功能
那个C的源码如下

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>

int main( int argc, char * argv[] )
{
int opt = 0;
char * optString = "cba";
uid_t uid ,euid;
uid = getuid() ;
euid = geteuid();
if(setreuid(euid, uid)) //交换这两个id
perror("setreuid");
while((opt=getopt(argc, argv, optString)) != -1)
{
switch(opt)
{
case 'c':
system("export LC_CTYPE=en_US.UTF-8 && svn up /home/xxx");
break;
case 'b':
system("service httpd reload");
break;
case 'a':
//printf("after setreuid uid :%un",getuid());
system("php /home/www/xxx/static/run_ci.php");
break;
}
}
return 0;
}

这样部署的优点是在于可以快速复制配置,服务端配置好之后就不用再管了,增容便捷

缺点是不适合BBS等用户可以修改文件的站点,因为单台机器修改文件可能造成不同步的现象,我现在的解决方法是BBS在指定的一台机器上,这个机器隔一段时间执行一下cron把文件提交上去,其他机器只是做备份用,可以随时切换,

瑾兮 2017-07-05 3 楼

我们用 Redhat RPM,所有软件都打包成 RPM
有一套自动的包集成工具,RPM 是自动生成的
“分发” 在我们本地使用队列服务,向所有 Agent 执行 yum update/install

归属感 2017-06-22 2 楼

主要有分发和同步两种方式,其中分发就是源代码的发送方主动呢传送,而同步就是接受方定时根据某规则询问

具体的方法和工具,请具体查询

瑾兮 2017-04-12 1 楼

SVN(版本控制)+Jenkins(持续集成管理平台)+Maven(项目集成),具体的操作方式baidu或者google