作为 SNG 应届生入职的传统,都会参加 SNG 的 mini 项目,每组大概10人,在短短10天的时间里开发一个相对完善的 APP 。这对整个团队来说是一件十分有挑战的事情,小组内只有两个人负责后台架构/开发,通过云平台部提供给我的支持,我们在腾讯云上搭建了一套相对简单但是功能基本符合需求的后台系统。本文将对后台架构进行简单的介绍。
一款利用 LBS 的失物招领 APP ,支持发布带有地理位置的失物招领信息、关键字匹配失物资讯推送失主。
因为是在后台层面分析,我们主要在技术层面进行介绍。产品的主要功能相对简单,主要实现
其中,主服务的逻辑处理需要至少有两台服务器,防止一台挂掉。其次,数据库也需要有准备,对于本产品来说,更偏重查询的使用。最后,影响性能的是匹配发布丢失物品的人是否与捡到物品信息匹配,再推送的相应丢失人的手机上,这就要考虑怎样处理回更加节省时间,提高效率。
只需要绑定后端的实例就可以了,LB默认监听后端的8080端口,而且可以修改对应的权重,因此只要把后端实例的 Nginx/Apache 端口改成8080即可。
public function handle()
{
// 最新上传的捡到物品。
$newFoundItems = FoundItem::where("state",0)->orderBy('updated_at', 'DESC')->first();
$foundItem = json_encode($newFoundItems);
// 丢失物品列表
$lostItems = LostItem::where("state",0)->get();
foreach ($lostItems as $item) {
$lostItem = json_encode($item);
$job = (new PushService($foundItem,$lostItem));
dispatch($job);
}
}
一旦有新的捡到物品,就将它跟丢失的物品作对比,把这些处理用 Job 的形式,丢到 redis 里面,有专门的服务器去处理 redis 里面的任务。
/**
* Execute push job.
*
* @return void
*/
public function handle()
{
$foundItem = json_decode($this->foundItems, true);
$lostItem = json_decode($this->lostItems, true);
$distance = $this->getDistance((string)$foundItem["latitude"], (string)$foundItem["longitude"], (string)$lostItem["latitude"], (string)$lostItem["longitude"]);
$sendMessage = "附近有人找到了你丢失的类似物品,快来看看吧!";
if($foundItem["category"]==$lostItem["category"])
{
if ($distance < 5000) {
// 查找device_token
$device_token = PersonalInfo::select("device_token")->where("qqtoken", "")->first();
$pushMessage = new PushMessage();
$pushMessage->pushMessage($device_token["$device_token"], $sendMessage);
}
}
}
[program:push_service]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ubuntu/laravel/didi/artisan queue:work --queue=default --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=20
redirect_stderr=true
stdout_logfile=/home/ubuntu/laravel/didi/storage/push_service.log
Mini 项目,9个人十天的时间,确实有很多考虑不到的地方,跟我厂动辄上亿上千万响应级别的项目,简直是五战的渣渣,但也是一个项目从0到1的实践,踩过了很多坑,也积累了很多经验。 也希望给后面 mini 项目的同学留个参考,做的简陋,供大家吐槽。
虽然我们的项目很小,但是对于正常中小型企业的项目,在腾讯云上构建确实是省时省力,减小了不少运维成本,性能也不错,虽然都是低配服务器,但是压测结果还是很理想。
平时在云上搭个小博客啊,建个小网站玩还是挺爽的。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。