后端技术

27.app后端搭建聊天服务器的经历

丶灬走出姿态 提交于 2020-01-18 01:07:03
现在,聊天功能已经成了社交app的标配了。但是,众多web开发出生的程序员对聊天相关的服务的不了解,带来了很多开发上的困扰。在这篇文章中,根据下面3个方面,谈谈聊天服务。 1. 聊天服务的技术选型 2. 开发社交app中,实现聊天服务踩过的坑 3. 那些著名app的聊天服务 1. 聊天服务的技术选型 需要开发聊天服务,首先要选择用到的协议,现在,常用的聊天协议有: (1) xmpp,一个基于xml的消息协议,被广泛应用于Gtalk,Facebook,但缺点也很明显,由于基于xml,会产生大流量。 (2) mqtt,IBM开发的即时通讯协议,一个简单的消息协议,需要自己实现加好友,群聊等IM常见的功能 (3) 类ActivitySync,微信实现的协议,省流量,性能高,但由于是私有协议,IM的所有功能都需要自己实现。 Xmpp协议作为一个被广泛使用的消息协议,有大量的网络资料和成熟开源模块,例如在android和ios上,就很方便集成xmpp协议。IM作为一个复杂的系统,有方方面面需要考虑,使用成熟的协议,能帮助我们避免很多问题,提高了开发效率。 同时,xmpp协议的缺点也很明显,基于xml,造成了费流量。 不信,你瞧: <iq id="rosterset1" type="set"> <query xmlns="jabber:iq:roster"> <item jid="user

Windows下Nginx的一些使用记录

不羁岁月 提交于 2020-01-17 14:41:35
Windows下Nginx的启动、停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。 1、启动: C:\server\nginx-1.0.2>start nginx 或 C:\server\nginx-1.0.2>nginx.exe 注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。 2、停止: C:\server\nginx-1.0.2>nginx.exe -s stop 或 C:\server\nginx-1.0.2>nginx.exe -s quit 注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。 3、重新载入Nginx: C:\server\nginx-1.0.2>nginx.exe -s reload 当配置信息修改,需要重新载入这些配置时使用此命令。 4、重新打开日志文件: C:\server\nginx-1.0.2>nginx.exe -s reopen 5、查看Nginx版本: C:\server\nginx-1.0.2>nginx -v Nginx几种负载均衡算法及配置实例 Nginx负载均衡(工作在七层“应用层”)功能主要是通过upstream模块实现

大前端与前后端分离

梦想的初衷 提交于 2020-01-17 13:03:58
一、大前端   简单来说,大前端就是所有前端的统称,比如Android、iOS、web、Watch等,最接近用户的那一层也就是UI层,然后将其统一起来,就是大前端。大前端最大的特点在于一次开发,同时适用于所有平台,开发者不用为一个APP需要做Android和iOS两种模式而担心。大前端是web统一的时代,利用web不仅能开发出网站,更可以开发手机端web应用和移动端应用程序。   由于node的出现,前端工程师不需要依赖于后端程序而直接运行,从而前后端分离起来。所以当开发一个新产品的时候服务只需要写一次,但是面向用户的产品可能有很多,例如网站、Android客户端、iOS客户端和微信小程序等。由于各个平台使用的技术栈都不一样,代码无法复用,非常浪费人力、物力。那么有没有什么技术能够解决这一痛点呢?大前端应运而生,其实大前端的主要核心就是跨平台技术,有了跨平台技术,各个平台的差异性就抹平了,开发者只需要一套技术栈就可以开发出适用于多个平台的客户端。   目前的主流跨平台方案:Cordova/phoneGap、React Native、Weex、微信小程序、PWA和Flutter等,根据其原理性,可以分为四大类。 H5+原生(Cordova、Ionic、微信小程序) JavaScript开发+原生渲染 (React Native、Weex、快应用) 自绘UI+原生(Flutter)

微服务,为什么从前后端分离开始?

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-17 12:23:47
关注「 IT老兵哥 」,赋能程序人生!既要低头赶路,又要抬头望天,科技是为人服务的,任何技术背后都有更深层次的考量,在本系列的第一篇文章中我们聊了微服务的本质,它是一种可以加速分工、促进合作的新协作机制。知其然,知其所以然,在第二篇文章中我们剖析了微服务为什么可以加速分工、促进合作,今天我们再接着来聊聊怎样开启微服务架构之旅。 微服务到底改变了什么,你知道吗? 微服务,为什么可以加速分工、促进合作? 1. 从前后端分离开启微服务改造 现在我们对微服务有了更深入的了解,也准备在构建新系统时采用这套新架构了,但它还是有些复杂度的,包括服务注册中心、统一配置中心、微服务网关、接入层网关、服务治理中心、调用链路追踪、分布式事务和分布式调度等众多组件。一口吃成胖子仅仅是一个美好的愿望,从单体式架构直接升级至全微服务架构,需要掌握这套全新的技术栈,对于缺乏前期铺垫的团队来说,学习曲线还是比较陡的,真正遇到的挑战往往超出想象的。 心理学对此有专门的研究,我们探索陌生世界的动力源于兴趣,而兴趣就是好奇心和正向反馈。如果我们刚开始就把目标设定的太高太远,在坚持努力了一段时间之后,还无法达成目标的话,那我们就接收不到正向反馈。久而久之,好奇心就会消磨殆尽,兴趣也就随之消失了。最靠谱的方式就是段带式进阶,将一个非常宏大的目标拆解成多个阶段性目标。在当前能力水平下

微服务设计原则

元气小坏坏 提交于 2020-01-17 01:09:42
1.AKF拆分 x轴:水平复制,单体系统通过集群加负载均衡运行多个实例; y轴:基于不同的业务将项目拆分为多个微服务; z轴:数据分区 2.前后端分离 前端和后端的代码分离也就是技术上做分离,我们推荐的模式是最好直接采用物理分离的方式部署; 这种分离模式的方式有几个好处: 前后端技术分离,可以由各自的专家来对各自的领域进行优化,这样前端的用户体验优化效果会更好。 分离模式下,前后端交互界面更加清晰,就剩下了接口和模型,后端的接口简洁明了,更容易维护。 前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支撑前端的web UI 移动App等访问。 3.无状态服务 4.Restful通信风格 来源: CSDN 作者: Alex张无忌 链接: https://blog.csdn.net/weixin_33320453/article/details/104009739

前后端分离的接口规范

怎甘沉沦 提交于 2020-01-14 19:21:46
作者:猿码道 链接:https://www.jianshu.com/p/c81008b68350 1. 前言   随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。   然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我们在产品项目开发过程中,前后端的接口联调对接 工作量占比在30%-50%左右,甚至会更高。往往前后端接口联调对接及系统间的联调对接都是整个产品项目研发的软肋。   本文的主要初衷就是规范约定先行,尽量避免沟通联调产生的不必要的问题,让大家身心愉快地专注于各自擅长的领域。 2. 为何要分离   参考两篇文章《Web 研发模式的演变》、《Web应用的组件化开发》, 目前现有前后端开发模式:“后端为主的MVC时代”,如下图所示:   代码可维护性得到明显好转,MVC 是个非常好的协作模式,从架构层面让开发者懂得什么代码应该写在什么地方。为了让 View 层更简单干脆,还可以选择 Velocity、Freemaker 等模板,使得模板里写不了 Java 代码。看起来是功能变弱了,但正是这种限制使得前后端分工更清晰。然而依旧并不是那么清晰,这个阶段的典型问题是:   

关于前后端分离以及前端部署Nginx

你说的曾经没有我的故事 提交于 2020-01-11 22:37:17
为什么要了解这个知识 因为笔者参与了学校的一个服务外包项目,我们选用的技术栈是springboot+vue的;又要考虑前后端分离,所谓适应时代的步伐。然而笔者是个菜鸡,所有笔者查看了一些博客,并将其进行总结。 那什么是前后端分离呢? 传统的web应用开发中,大多数将浏览器当做前后端的分界线。浏览器中为用户进行页面展示的部分称为前端。而将运行在服务器上,为前端提供业务逻辑和数据准备的所有代码称为后端。 前后端分离 前后端分离并不只是开发模式,而是web应用的一种架构模式。开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署。 简单来说,前后端分离就是把数据操作和显示分离出来,前端专注做数据显示(可通过文字,图片,或者图标等让数据形象直观的显示出来),后端专注于做数据的操作,前端把数据开放给后端,后端对数据进行修改,后端提供接口给前端调用,来开发对数据的操作。 前后端分离大概可以从四个方面来理解 1、交互形式 在前后端分离架构中后端只需要负责按照约定的数据格式向前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,最终返回给浏览器。 2、代码组织方式 前后端分离代码组织方式有两种。 半分离:前后端共用一个代码库,但是代码分别存放在两个工程中

总结 - 2019

懵懂的女人 提交于 2020-01-11 14:53:59
总结 - 2019 成果 心路历程 行业规律 团队磨合 全局感受 以后每年做个小小的总结吧。 成果 到游戏行业一年两个月了,终于通过自身的努力得到了Boss的认可,可以承担带人带项目的责任了。 心路历程 回首19年,信念是最重要的。 苦和累根本不算什么,全凭一个信念支撑着我前进,虽然也曾看不到希望,一度心灰意冷。 这一年对我刺激最大的,就是三国全面战争了,看着吕布那样… 从另一个层面来说,一款游戏也是一个文化产品,一个文化的符号,我们的历史文化被一群XXXX(此处省略1K字)拿来肆意地羞辱,我觉得很是无能为力,觉得很沉重。 现在看来当时想得有点太多了,自己的生活都没有管好,还说什么文化。 仓廪实而知礼义,衣食足而知荣辱。自己也不过是刚刚吃饱饭,成天想着这些有的没的,未免有点眼高手低了。 行业规律 凡事都有自己的规律,脚踏实地的去做,必然有所回报。 三月的时候,一度对自己的技术水平很是失望,一个游戏项目的源码都看不大懂。到了两三个月才明白,游戏服务器的代码,不仅仅是逻辑的体现,更是一个游戏从开发到上线的苦难史。看不懂代码并没有什么大不了的,除了框架,其他细节随时会变化,因为需求根本就没有停止变动过。 现在回首,互联网的需求真是简单而纯粹。 找到了源头,熟悉了策划的意图后,其他的一切水到渠成。 线程安全、高并发、高性能、高可用,思路都是相同的,只是场景不同,某些细节不一样。 团队磨合

尚筹网:前后端分离如何对接

て烟熏妆下的殇ゞ 提交于 2020-01-09 04:09:05
什么是前后端分离 对接模式 1、项目启动时,前端工程师和后端工程师开会确定JSON数据的详细格式。 字段 类型 作用 必传 2、JSON格式确定后前后端分头开发 3、前端工程师在后端工程师未完成时使用Mock.js技术提供的假数据开发 后端开发完成将程序部署到测试服务器之后,前端工程师连接测试服务器使用真实数据测试,联调。 来源: CSDN 作者: Ocean&&Star 链接: https://blog.csdn.net/zhizhengguan/article/details/103854522

WebView性能、体验分析与优化

我怕爱的太早我们不能终老 提交于 2020-01-09 01:03:26
在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便利性的同时,WebView的性能体验却备受质疑,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及三端的融合将会是大趋势。那么如何克服WebView固有的问题呢?我们将从性能、内存消耗、体验、安全几个维度,来系统的分析客户端默认WebView的问题,以及对应的优化方案。 性能 对于WebView的性能,给人最直观的莫过于:打开速度比native慢。 是的,当我们打开一个WebView页面,页面往往会慢吞吞的loading很久,若干秒后才出现你所需要看到的页面。 这是为什么呢? 对于一个普通用户来讲,打开一个WebView通常会经历以下几个阶段: 交互无反馈 到达新的页面,页面白屏 页面基本框架出现,但是没有数据;页面处于loading状态 出现所需的数据 如果从程序上观察,WebView启动过程大概分为以下几个阶段: 如何缩短这些过程的时间,就成了优化WebView性能的关键。 接下来我们逐一分析各个阶段的耗时情况,以及需要注意的优化点。 WebView初始化 当App首次打开时,默认是并不初始化浏览器内核的;只有当创建WebView实例的时候,才会创建WebView的基础框架。