精华内容
下载资源
问答
  • 摘要:本篇文章会向读者展示几个架构设计的关键点,使一个社交应用能够成为真正的下一代社交产品。但这只是设计阶段,需要更深入的分析和了解系统的当前状态。本篇文章会向读者展示几个架构设计的关键点,使一个社交...
  • 该文档详细介绍了后端架构工程师的进阶路线,包括需要掌握哪些开发语言,常用的软件开发架构,网络协议,软件设计思路。同时,文章中还有大量的github开源代码以供学习。
  • 该文档是后端常用技术的技术栈文档,是一个后端开发人员需要掌握的后端技术。
  • 后端架构说明.pdf

    2020-11-26 11:32:52
    随着互联网应用越来越大,越来越复杂,对支撑应用的后端提出了越来越多的要求。 应用不仅 要快速、稳定、容易水平扩展,而且要能迅速响应业务需求, 而面向服务的分布式架构便应运 而生。
  • app后端架构

    千次阅读 2016-05-26 12:01:48
     Restful风格:RESTfu设计原则,它被Roy Felding提出(在他的”基于网络的软件架构“论文中第五章)。而REST的核心原则是将你的API拆分为逻辑上的资源。这些资源通过http被操作(GET ,POST,PUT,DELETE)。  但现在...

    (1)Restful设计原则

     

        Restful风格:RESTfu设计原则,它被Roy Felding提出(在他的”基于网络的软件架构“论文中第五章)。而REST的核心原则是将你的API拆分为逻辑上的资源。这些资源通过http被操作(GET ,POST,PUT,DELETE)。

           但现在看,一般的操作只有两种:GET ,POST。

        这个设计原则最简单的应用就是根据object而不是页面来设计api。最开始的时候,app的一个页面需要什么数据,api就返回什么数据。结果随着app的UI不断改版,需要的数据不断变化,不停地修改api,最后当api的改动会影响以前的版本的时候,只能写一个新的api版本,最后弄得api中有很多_V2,V3这样的标志,恶梦!

        后来在网站的重构过程中,就根据object来设计api,但根据object来设计,又有一个问题,一个大object可能包含很多小object,是一个api返回全部小object,还是分为多个api返回?根据业务和技术,带宽等仔细考虑吧。

     

    (2) api的命名

        其中一个原则,一看api名字就知道这个api是干啥。在创业团队中,一般就只有一两个人负责后台,当你要负责几十甚至上百个api,你就知道不能“望名知api”是个什么样的痛苦。

     

    (3)    安全性,请看 http://blog.csdn.net/newjueqi/article/details/18887571 


    (4) api返回数据

        app客户端的语言 java 和object-c都是强类型语言,所以怎么处理空值显得特别重要,不合理的设计很容易造成app的闪退。

        从后台的角度来说,api中返回的数据中,正确值和空值的类型必须一样,举例,用户名的字段是“realname": "xxx”,如果用户名为空,则应该返回“realname": ""。如果返回值是一个array,空数据则返回一个空array,绝对禁止null值。

        对于客户端,必须用个全局的函数来处理所有api的返回数据,需要有一个机制:对于某个客户端需要数据,如果api中缺失,客户端自动补上并给予默认值。这个机制在我们的实践中大大减少了app的闪退。

        同时,在数据库设计的时候,一个合理的设计必须是所有字段都有默认值,不应该允许null值。null在大量的语言和数据库中,会带来无穷的问题。对于这个数据库设计原则,我以前不太明白,现在经历了一年的api设计后,终于懂得。

        如果客户端是php,还有一个问题,php中数组和字典都是array,但在java 和object-c中是不一样,这个问题一定要注意。

     

    (5)图片的处理

     

        在不同版本的app中,各种不同尺寸的手机中,同一张图片显示的尺寸可能是不一样,如果每次都需要用返回原图,然后在客户端处理,则极大浪费网络资源。而如果是后台处理好图片才返回,则又是一个挑战,怎么有效保存和裁剪多种图片尺寸呢

        例如,一开始头像只需要返回60*60的尺寸,后来在新的版本需要返回70*70, 又出了一个新版本,需要返回80*80, 每次增加一个新的尺寸,怎么在数据库上记录下来。这个问题在一开始做api的时候没考虑,后来不得不用了一个极端的方法,没增加新的图片尺寸,就在数据库中增加一个新的字段,保存并生成新的图片尺寸,结果最后数据库的头像字段有"avatar","avatar_60_60","avatar_70_70","avatar_80_80",这种极度恶虐的设计。

        最后,针对图片,我们才用了这样的策略:

    (1)客户端本地缓存图片,只有没有合适的图片,才去服务器取。

    (2)当客户端需要某种尺寸的图片,由客户端告诉服务端图片的尺寸,服务端动态生成并缓存起来。

     

         例如,客户端需要图片(http://www.baidu.com/img/bdlogo.gif)的80*80的尺寸,则在图片的路径加上宽和高的参数(类似于CDN的机制) http://www.baidu.com/img/bdlogo.gif?w=80&h=80, 则服务器就生成80*80的尺寸并返回。

     

        采用了这样的图片处理机制,数据库中只要有一个字段保存原图就行了,其它尺寸就由客户端告诉服务端动态生成。以后无论什么尺寸的图片,数据库中都不需要记录,数据库只有原图就行了。

     

    (6)返回的提示信息

       最科学的情况,服务端只返回信息代码,具体的文字提示由客户端决定。

        如果文字信息是由服务端返回,则最起码要区分2种信息:提示用户的信息,提示客户端程序员的信息。这两者的区别:

    1.提示用户的信息是要在让客户知道的,提示客户端程序员的信息不需要让客户知道的。

    2. 提示用户的信息文字很友好,客户不需要专业基础一看就知道是什么,提示客户端程序员的信息则很专业,例如告诉客户端少传了哪个参数?哪个参数有问题等等。

     

    (7)在线api文档和测试

     

        我们网站的api在线测试文档,既是一份在线api文档,也是一个在线测试工具,极大方便沟通和测试。每次客户端程序员觉得某个api有什么问题,我们就是这个在线工具上讨论沟通的。客户端程序员最喜欢这个玩意了^-^。

        上个图解一下馋(这个图是旧版的api,已经弃用了):

     

    负责做这个功能的同事专门写了篇博客详细介绍了这个在线api测试文档,还带有demo:

     

     http://amuropikin.iteye.com/blog/1701537

     

    ----------------------------------------------------------------------------------------------------------

       个人认为,在小型的创业团队中,特别是以应用产品为主,在架构后台的时候,需要集中精力解决自身业务上的问题,不是花时间解决第三方已经解决的问题,简单点来说,就是能用第三方服务就使用第三方的服务。基于这个原则,就有了下面的系统架构:

     

    1. apns:由于在apns中,无效的token会导致连接apns连接的失效从而使apns信息丢失。解决的方案是维护发送队列,当apns服务器返回错误的token后,把这个错误token后的消息重发。第三方推送很好了实现了这个技术方案,我们选择了百度云推送。

    2. email:要考虑邮件发送失败的重发问题,所以不再在服务器上搭建sendmail服务发送,选择了邮件服务商mailgun。mailgun还提供每个账号每月1万封邮件的免费额度,很适合创业团队。

    3. coreseek: 一个基于Sphinx的全文检索引擎。在前面描述的LBS模块中,和检索用户昵称,商铺等搜索功能上需要用到。

    4. redis:一个支持多种数据结构的key-value数据库,在LBS模块,性能优化等多个方面都有广泛的用处。

    5. httpsqs:轻量级的消息队列。

    6. xmpp:采用了开源的openfire,当web服务需要向openfire通讯,有两种情况:

    (1)实时的需求,例如注册的时候在聊天服务器注册一个用户,那么是直接连聊天服务器。

    (2)如果是其它非实时的需求,例如通过聊天服务器向app发送一个更新通知,那么就在队列中处理。

    7. 监控,采用了监控宝和云服务器提供的监控数据,能满足目前的需求了。

     

    参考:

    http://blog.csdn.net/newjueqi/article/category/1743543

    展开全文
  • 后端架构的演变过程

    2020-02-24 20:24:24
    后端的应用架构经过发展,分为单一应用架构、垂直应用架构、分布式应用架构、面向服务的分布式应用架构、微服务架构等。 一、单一应用架构 把所有功能都集中在一个项目里面,类似于刚学习时的SSM,就把所有的...

    后端的应用架构经过发展,分为单一应用架构、垂直应用架构、分布式应用架构、面向服务的分布式应用架构、微服务架构等。

    一、单一应用架构

    把所有功能都集中在一个项目里面,类似于刚学习时的SSM,就把所有的功能都放在同一个项目。

    适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。

    缺点: 1、性能扩展比较难

           2、协同开发问题

           3、不利于升级维护

    二、垂直应用架构

    通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。

    缺点: 公用模块无法重复利用,开发性的浪费‘’

     

      三、分布式应用架构

    将各个应用通过分层独立出来,可以利用rpc实现web与service、service与service的互相调用,提高了代码的复用性。

    缺点:  每个调用的模块要存储一份完整的被调用模块的位置和状态,一旦位置和状态发生变化,就要更新所有涉及的配置。

    从图可以看出,这种架构缺乏服务治理,服务是耦合的,如果服务地址是发生了变化,并不会动态化的发现服务地址,需要修改的地方很多

    四、

    面向服务的分布式架构

    随着架构不断增大,服务节点也越来越多,服务之间的调用和依赖关系也越来越复杂,需要有一个统一的中心来调度、路由、管理所有的服务,基于这个中心构建的这个星型架构就是现在目前最主流的SOA分布式架构。

     

    服务地址不需要写死,服务是动态的自动注册和发现

    五、微服务架构

    这个架构是在soa的基础上实现的,微服务架构粒度更加精细,每个功能同有一个专门的项目。这种架构的代表是微服务架构(springcloud)

    展开全文
  • MCU芯片后端设计课程,正是为此而打造,基于底层技术和硬件开发设计而来的课程。其实不难发现,随着华为开始全架构的开始为芯片制程提供研发支持,底层与硬件技术也会受到更多的重视和青睐。底层和硬件的开发,包括...
  • 后端框架有哪些?8个流行的后端框架推荐 后端框架 在选择要使用的后端框架时,许多选项可用。虽然每个后端框架都自己的优点和缺点,但在做出最终决定之前,还有一些其他因素需要考虑。在本指南中,我们将仔细...

    后端框架有哪些?8个流行的后端框架推荐

    后端框架

    在选择要使用的后端框架时,有许多选项可用。虽然每个后端框架都有自己的优点和缺点,但在做出最终决定之前,还有一些其他因素需要考虑。在本指南中,我们将仔细研究经过尝试的框架,以确定哪个是最适合您的后端框架。

    后端vs前端

    如果您是Web开发世界的新手,后端和前端开发之间的区别可能不那么明显,但是,了解两者之间的区别很重要。以下是前端开发人员与后端开发人员的一些区别。

    前端开发:前端开发人员在很大程度上负责用户所看到的内容(即网站页面),前端开发人员主要使用HTML,CSS和JavaScript。他们的主要关注点是创建出色的用户体验,并确保网站设计和布局或Web应用程序始终具有凝聚力。

    后端开发:另一方面,后端开发人员正在研究幕后发生的事情,后端开发人员使用各种库,API,Web服务等。他们负责数据库系统的实现,确保各种Web服务之间的正确通信,生成后端功能等。

    8个流行的后端框架列表

    在这个后端框架列表中,我们不想坚持使用单一编程语言。相反,我们希望展示各种语言的后端框架。当然,下面的列表并未提供针对每种语言的后端框架建议,但它确实提供了一些很好的建议。

    1.Laravel

    在这里插入图片描述
    Laravel

    Laravel是一个基于PHP的后端框架,具有整洁优雅的语法,适应大型团队的能力以及现代工具包的功能。Laravel遵循MVC架构模式,旨在促进广泛的后端开发。Laravel还提供自己的数据库迁移系统,并拥有强大的生态系统。

    特征

    简单快速的路由引擎

    附带CLI

    强大的模板系统(刀片)

    文档功能

    2.CakePHP

    在这里插入图片描述
    CakePHP

    CakePHP是2005年发布的PHP框架之一,从那时起,它已经走过了漫长的道路,现在被称为现代PHP框架,允许开发人员快速构建。CakePHP使用干净的MVC约定,并且具有高度可扩展性,使其成为构建大型和小型应用程序的绝佳选择。

    特征

    允许快速构建

    建立在安全的基础上

    入门不需要复杂的配置

    3.Django

    在这里插入图片描述
    Django

    Django是一个高级Python框架,它包含了许多的功能模块,意味着开发人员想要的大多数内容都包含在内。因此,对第三方插件的需求较少,如果你计划构建一些小的东西,Django可能不是最好的选择。

    特征

    高度可定制

    可扩展

    广泛的社区和文档

    4.Ruby on Rails

    在这里插入图片描述
    Ruby on Rails

    Ruby on Rails是一个用Ruby编程语言编写的服务器端Web框架,Ruby鼓励使用设计模式,如MVC和DRY。

    特征

    提供大型插件库

    Ruby提供了清晰的语法

    庞大的社区

    小项目易于开发和管理

    5.Flask

    在这里插入图片描述
    Flask

    Flask是一个基于Python的后端框架,与Django不同,它是轻量级的,更适合开发小型项目。Flask支持Jinja2模板,安全cookie,单元测试和RESTful请求调度等功能。它还提供了大量的文档,对于那些不需要Django附带的所有花俏功能的Python程序员来说,它是一个很好的解决方案。

    特征

    非常灵活

    比Django更轻巧,适合小型项目

    很棒的文档

    提供快速构建原型的能力

    6.Phoenix

    Phoenix是一个后端框架,可与Erlang的虚拟机配合使用,并使用Elixir编写。鉴于Elixir是一种功能语言,它可能不像其他面向对象语言那样受欢迎,但它是为构建可扩展和可维护的应用程序而设计的,Phoenix将经过验证的技术与功能性编程的新思想结合使用。

    特征

    非常快

    容错

    内置数据库选项

    精心设计

    大量的文档和活跃的社区

    7.Express

    在这里插入图片描述
    Express

    Express是Node.js的一个快速,简约的框架。它提供了基本的Web应用程序功能,此外,借助各种HTTP实用程序方法和可用的中间件,可以轻松构建API。许多流行的服务器端和完整堆栈框架都使用Express,如Feathers,KeystoneJS,MEAN,Sails等。

    很棒的API

    设置简单,学习起来简单

    大量插件可供使用

    8.Spring Boot

    在这里插入图片描述
    Spring Boot

    Spring Boot是一个基于Java的开发框架,由Spring创建,旨在易于使用,并提供一个生产级的基于Spring的应用程序。

    特征

    创建独立的Spring应用程序

    高度可扩展

    大量的文档

    专为使用云方法的大型应用程序而构建

    广泛的生态系统

    选择后端框架时要考虑什么?

    在选择后端框架之前,您应该考虑几个重要因素,以下是一些要记住的事项。

    学习曲线:每个框架在命名,目录结构等方面都有不同之处。如果您已经熟悉特定的编程语言,那么您可能希望坚持使用该语言的框架。另一方面,如果您还不熟悉特定的语言,使用Python的Django框架是一个很好的起点,因为它非常简单。

    文档/社区:如果您以前没有任何后端框架经验,那么选择具有大量文档和/或大型社区的框架可能是有利的。

    库:一些框架在提供的库方面提供了更多的灵活性和选择,这允许开发人员实现或配置库以执行否则将是耗时或不可能的特定任务。

    安全性:安全性是一个非常广泛的主题,根据您正在构建的应用程序,您可能需要某些安全功能,某些后端框架表现更好。

    可扩展性:如果您正在为大众构建应用程序,您需要确保框架能够随时扩展。

    结论

    有多种后端框架可供选择,每种框架都有各自的优缺点。确定哪个后端框架是最好是相当主观的,因为它取决于你想要实现的目标,你必须克服学习曲线等等。尽管如此,希望这个后端框架列表能够为你提供一个方向。

    展开全文
  • 史上最全后端架构师技术图谱,值得收藏

    万次阅读 多人点赞 2018-04-06 23:00:03
    架构师素质 团队管理 资讯 行业资讯 公众号列表 博客 团队博客 个人博客 综合门户、社区 问答、讨论类社区 专项网站 其他类 推荐参考书 在线电子书 纸质书 技术资源 开源资源 手册 在线课堂 会议 工具 文件服务 综合...

    转:https://github.com/xingshaocheng/architect-awesome


    展开全文
  • 后端架构设计涉及很多方面,并且跟网站规模很大关系,规模越大涉及技术越多,下面介绍一下超大型网站后端架构设计,以及包含哪些核心技术。 分层是架构设计一种重要方式,通过分层来讲问题很高隔离,后端架构...
  • 参考公司的人员组织架构文档的编写方式,这里整理了java后端工程师学习的知识点架构文档;主要方便学习后可以一目了然的看到学习过的知识梗概,帮助大脑记忆理解。
  • 后端架构师技术图谱
  • 后端架构师技术图谱

    2018-05-03 13:47:33
    https://segmentfault.com/p/1210000014698268?share_user=1030000012902446
  • 业务越来越复杂,服务分层,微服务架构架构升级的必由之路,Java技术体系,和微服务相关的技术有哪些呢? 微服务框架 Spring Cloud Docker与虚拟化 微服务架构 五:性能优化 任何脱离细节的ppt架构师都是耍流氓,...
  • 后端架构

    2020-08-13 19:29:18
    一个基于nest的后端架构 请求—》中间件过滤(跨域,来源校验)-》守卫过滤—》拦截器处理—》管道处理—》控制器—》提供商—》拦截器处理—》异常过滤器(捕获以上流程出现的异常)
  • 后端架构面试题总结

    2020-03-31 14:19:25
    面试题总结
  • 互联网电商后端架构高并发分布式演变之路

    千次阅读 多人点赞 2019-06-05 13:40:21
    本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进一个整体的认知,文章最后汇总了一些架构设计的原则。 2. 基本概念...
  • ENJOY后端架构演进.pdf

    2021-10-14 19:45:03
    ENJOY后端架构演进.pdf
  • 后端架构师技术图谱》 后端架构师技术图谱go版本 --- Fork by (Toc generated by ) 数据结构 队列 非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用 CAS 机制(compareAndSwapObject 原子操作)。 阻塞...
  • 数据采集的后端架构设计 参考; 1.https://blog.csdn.net/u011676417/article/details/72846138
  • 新新一代移动一代移动&物联网应用的后端架构物联网应用的后端架构 毛郸榕 毛郸榕 da danrongm@nrongm@ 计算服务向 无服务器趋势发展 Evolution of Cloud Compute Toward Serverless 计算服务的演进- AWS公有云基础...
  • 今天就来说下简化版的思路,由于每个项目使用的技术不一样,所以可能和你们的项目部分不一样的地方。    我们的项目分为门户系统和管理系统,今天我们就简单的谈谈后台的实现流程。什么叫做开发流程?流程就是...
  • 项目采用BS架构,采用web与php集成式开发,页面适配,响应式开发,一套完整的后台管理系统
  • 由此初衷我准备开始我的【从零开始搭建后端微服务架构】系列。虽然接触不到互联网,但我还是想证明,我是一名优秀的技术人。 本系列着重记录搭建的点滴历程,我会尽可能深挖用到的每项技术,但可能并不能作为某项技
  • 后端架构深度好文

    千次阅读 2016-04-08 14:52:48
    今天看到了一篇不错的文章(转载一下细细思考)...本次新兵训练营,受众在于应届毕业生,目的在于让新同学系统化并且针对性的了解平台的核心技术及核心业务,以使新同学在新兵训练营结束后,能够对平台的底层架构与业
  • 后端架构师技术图谱》 最后更新于20180502 (Toc generated by ) 数据结构 队列 非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:...
  • 棋牌游戏-后端架构(1)

    千次阅读 2019-05-16 18:27:00
    每个Server均一个独立的ServerID,客户端在选择游戏时,会在每条消息协议中增加此ServerID,告诉通讯网关消息往哪发。 涉及技术:C++\libevent实现异步消息处理转发,采用自定头+Protobuf协议...
  • java后端系统架构总论篇

    千次阅读 2015-03-28 18:56:01
    本篇为交易性系统架构总论,总体概述系统架构要求与解决思路。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,045
精华内容 88,418
关键字:

后端架构有哪些