分类目录归档:技术探索

架构师图谱·微服务&消息队列篇

1. 概述

“架构师图谱”是一个很宏大的命题,特别是优秀的架构师自身也是“由点到面再到图”,一点点成长积累起来,尝试写这篇文章的目的更多的是结合自身的一些架构、研发、管理经验对现阶段做一个复盘总结,所以这里更偏向于后端图谱,依赖于开源技术、云原生或者其他第三方服务。 这里会重点介绍一些技术栈、设计理念以及适应场景,这些可以作为我们选型时的依据。所谓“架构即决策”,是在一个有约束的盒子中寻求最优解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等编织、掺杂在一起的综合体。本质上无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。

1.1 序章

一个技术图谱:

计划会分三个篇章来介绍:

  1. 微服务&消息队列篇:重点聚焦在微服务和常用的消息队列,包括相关的选型以及一些理论基础
  2. 数据库&分布式篇:主要集中在数据库、分布式(一致性/锁/缓存/发号/任务调度等)
  3. 尾篇:分享一些流媒体、Devops、项目管理、团队建设方向的一些经验

完整的思维导图:

2. 微服务

微服务(英语:Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building

阅读全文

LNMP知识结构

最近刚好有些时间,就结合自己近几年的工作经验,整理了一些LNMP相关的资料,侧重于范围性的知识、基础原理,不过都是作为一个合格程序员应该熟练掌握的技能点。

具体详见下图,有不足之处,也欢迎指正

阅读全文

在新浪NBA聊天室刷广告是怎么实现的

新浪NBA聊天室,对于看不了视频直播的童鞋,一直是一个看球聊球的好地方,但是最近聊天室里出现大批的刷广告行为。

例如今天的一场球赛:奇才vs老鹰

进入聊天室,就会发现遍地的广告,并且账号每次都会更换,根本无法正常的聊天。

抓了几个包,了解了正常发一条聊天信息的流程

1.注册clientId

2.使用注册的clientId加入某房间(例如:房间19)

3.发送消息

4.如果要切换房间,则先退出当前房间,再到流程2

注意:每个聊天室的服务器IP、端口不一定相同,不同聊天室的房间编码没有统一规律,这些都需要抓包获取到。

模拟发布消息[以上边聊天室为例]

服务器IP:58.63.237.91:8080

房间19编码:/im/3694301_19

1.注册clientId

参数:channel:/meta/handshake

1
2
3
4
5
阅读全文

protobuf初体验

1. 简介

protobuf是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

2. 下载

以linux环境为例 先安装protobuf

Google已经把protobuf的源码转移至github,并提供了autogen.sh进行部署,不过需要翻墙。也可以直接下载2.5.0版本的源码包编译安装。

3. 阅读全文