专栏首页赵伟成的专栏【腾讯云的1001种玩法】如何利用腾讯云搭建分布式应用
原创

【腾讯云的1001种玩法】如何利用腾讯云搭建分布式应用

一.背景

之前有个zip包忘记密码了,网上搜的一些暴力破解的软件,要么收费,要么不好用,最关键的是,速度太慢,于是自己决定开发一个分布式的密码破解软件。 软件的问题解决了,分布式执行需要的机器的问题来了。云自身的分布式组织,跟分布式软件天生契合。

二. 分布式密码破解软件架构设计

1. 架构图

2. 模块设计

整体架构是C/S模式,多个client通过server来调度,执行破解任务。 (1) server server分为UI层和分发层,UI层是非必要的,可以做成独立客户端,也可以做成B/S的服务,甚至命令行也是ok的。 分发层,这是分布式的核心:调度client执行破解操作,同步执行信息。这一层的实现,不能依赖操作系统,也不能依赖UI,这样可以保证可移植性。 (2) client 调用层,也是可移植性编写的一层。分布式的实现关键就在于server的分发层和client的调用层之间的交互协议了。 UI层,可以跟调用层交互,展示当前的状态信息和进度,也是非必须的。 实现层,具体实现破解的操作,例如zip、rar等压缩工具只能暴力破解的可以考虑用7z.exe,其他的doc、pdf可以使用对应的破解工具或算法。这一层会跟具体平台相关。(对于7z这种跨平台的软件来说,根本也不是问题)

三.使用腾讯云搭建系统

1. 购买云主机

用账号登陆后,进入控制台,选择下图中的“云服务器”。

在界面上选择“新建”,就会有一个流程让你选择对应的配置、地区,会标明使用价格。 从根本上讲,cpu核数决定了执行的快慢,但是如果核数选择的不好,可能会导致CPU调度成本,影响整体性能。一般来说,以4核的比较好,其他的硬盘、网络等配置可以低一些,节省成本。 从实现上,可以在一台4核的机器上,部署4个client,当然也可以部署一个client,然后并发4个线程,将cpu使用率最大化。个人比较推荐的是4个client(通过不同的端口号或协议内部实现区分),避免进程内部的调度、同步,如果实现的不好,容易导致crash、死锁或性能消耗。

2. 机器配置

如果购买了多台机器,那么可能要处理机器之间的网络环境,各类云服务都提供了丰富的网络特性,以满足复杂网络需求。还有更高阶的虚拟私有网络(VPC)、子网(Subnet)等内容,这些是针对企业级或大型应用的,暂时用不到。

可以配置安全组用于限制自己内部子机间的访问策略,这个是动态的,类似于iptables,相当于防火墙策略,一般使用默认的全部开放就可以了,安全级别要求高的应用可以定制自己的策略。 ssh密钥,如果你的云服务器(英文通常称cvm,cloud virtual machine)绑定了ssh密钥,那么你在使用ssh登录的时候,ssh客户端会要求你提供证书,证书在创建密钥后可以下载到本地。如果没有绑定,可以指定登录账号和密码,至少会有一个root账户(linux的话)。 弹性公网ip,这个是让你的应用能够在公网使用的关键,通常来说,创建的cvm都是内网ip,是无法在公网中找到的,如果绑定了弹性公网ip,那么就可以在公网上访问了,类似于家里路由器对应的dmz主机,是可以被公网访问的。

3. 应用部署

既然放在云上面,为了能够自己用,甚至提供给别人用,当然是要做成B/S模式的应用了(应用自身内部是C/S模式)。使用django+nginx+apache,可以快速构建一个网站,并提供对应的rpc接口,操作server端,下发任务就便捷了。 赶紧自己去试试,做一个分布式云应用吧!!

相关推荐

浅析海量用户的分布式系统设计(1)

高性能服务器架构思路(三)——分布式系统概念

分布式云数据库DCDB for TDSQL

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在Ubuntu 16.04或Debian 8上安装SquirrelMail

    SquirrelMail是一个用PHP编写的webmail包,它支持SMTP和IMAP协议,并具有跨平台兼容性。SquirrelMail需要一台带有PHP的We...

    Likenttt
  • 如何选择有效的防火墙策略来保护您的服务器

    使用防火墙既可以用于制定智能策略决策,也可以用于学习语法。 像iptables这样的防火墙能够通过解释管理员设置的规则来实施策略。但是,作为管理员,您需要知道哪...

    楠宝宝
  • 如何在Ubuntu 18.04上安装和使用Composer

    Composer是一种流行的PHP 依赖管理工具,主要用于促进项目依赖项的安装和更新。它将根据项目要求使用适当的版本检查特定项目所依赖的其他软件包并为您安装。

    编程男孩
  • 如何在CentOS 7上安装和配置scponly

    scponly是匿名FTP的安全替代品。它使管理员能够设置具有受限远程文件访问权限且无法访问交互式shell的安全用户帐户。

    angel_郁
  • 如何在Ubuntu 14.04上安装和配置PostGIS

    PostGIS是PostgreSQL关系数据库的空间扩展。PostGIS允许您使用几何和地理数据类型存储空间数据,使用空间函数执行空间查询以确定区域,距离,长度...

    物花无语
  • 如何在Ubuntu 16.04上安装和使用Byobu进行终端管理

    Byobu是一个易于使用的tmux(或screen)终端多路复用器包装器。这意味着它可以让您轻松打开多个窗口并在单个终端连接中运行多个命令。

    陈树丶
  • 腾讯云服务器扩容云磁盘增容至挂载盘目录中的方法

    在老蒋记录的文章中,关于VPS、服务器的挂载盘问题其实也是比较多的,但是确实因为疏忽不同的服务商可能操作起来有所不同。最近主要对腾讯云服务器这块的云磁盘扩容挂载...

    老蒋
  • 如何在Ubuntu 18.04上安装和保护Mosquitto MQTT Messaging Broker

    MQTT是一种机器到机器的消息传递协议,旨在为“物联网”设备提供轻量级的发布/订阅通信。它通常用于地理跟踪车队,家庭自动化,环境传感器网络和公用事业规模数据收集...

    乌鸦
  • 如何在Ubuntu 14.04上安装和使用BaasBox

    BaasBox是一个充当数据库服务器和应用程序服务器的应用程序。开箱即用,BaasBox通过备份提供用户注册,用户管理,角色管理,内容管理,文件管理和数据库管理...

    心语花束
  • 如何在Ubuntu 16.04上安装和保护phpMyAdmin

    虽然许多用户需要像MySQL这样的数据库管理系统的功能,但他们可能不会仅仅通过MySQL提示与系统进行交互。

    尘埃

扫码关注云+社区

领取腾讯云代金券