赞
踩
【后端开发】互联网后台开发,通用必备技术栈(设计与工具)
《服务端开发:技术、方法与实用解决方案》——读书笔记
目录:
1、功能设计
1.1 系统设计
1.2 数据设计
2、非功能设计
2.1 稳定性设计
2.2 可测试性设计
2.3 应用安全、异常处理、扩展性、兼容性
3、开发技术栈与工具
3.1 编程语言与框架
3.2 集成开发环境与工具
3.3 数据库与数据存储
3.4 中间件与分布式
3.5 操作系统与应用部署
需求分析与抽象建模
设计和划分功能域
设计功能域之间的协作
确定功能域之间的数据边界
功能域内部设计
详细设计
数据设计
数据库选型:
存储类型 | 特性和适用场景 | 业界常用产品 |
---|---|---|
关系型数据库 | 支持索引、事务机制的结构化关系模型数据,SQL查询,适用于单表数据量较小的场景(单表过千万行需配合拆表拆库分布式路由) | MySQL、Oracle、PostgreSQL |
KV内存型数据库 | 基于key存取数据,O(1)级高效查询,一般用于数据查询缓存 | Redis、Memcached |
列式存储型数据库 | 面向列族组织的半结构化数据,基于RowKey读写,方便横向水平扩展,成本低廉。缺点是无索引、无跨行事务支持。适用于分布式海量数据存储(单表TB&PB级)和数据分析场景 | HBase |
文档型数据库 | 面向文档类数据,无需schema定义,如配合CDN机制高效存储和加载图片 | MongoDB |
搜索型数据库 | 基于倒排索引解决数据的全文搜索问题,用于搜索引擎和海量数据分析领域 | Elasticsearch |
图数据库 | 基于图论存储海量的数据实体和丰富的关系信息,提供图模式的查询搜索能力。适用于社交网络、知识图谱等复杂关系数据 | Neo4J |
业务方提出的需求和产品经理设计的产品方案大都聚焦于业务功能描述,在验收时,通常也只是验证要求实现的功能是否符合预期,极少考虑稳定性、兼容性、安全性、异常补偿等非功能性问题。
然而,很多时候,非功能性问题往往事关项目成败,因此必须根据业务场景谨慎评估非功能性问题并设计相应的解决方案。
在互联网领域,稳定性设计是最重要的非功能性设计。
与客户端不同,服务端对用户来说是不可见的,测试工程师无法直接通过 UI(User Interface)界面来验证服务端的复杂逻辑,因此,服务端开发工程师在进行非功能性设计时,需充分考虑可测试性。
非功能性设计涉及面广,除了上面介绍的稳定性和可测试性,还有应用安全、异常处理、扩展性、兼容性等方面,如下图所示。
后端开发,编程是最基本的能力。目前,全球已经投入使用的编程语言超过 50 种,其中多数可用于后端开发,但术业有专攻,不同语言的流行度和学习成本不一样,各自的特性也有较大差异。在选择开发语言时,可以参考国内大厂的主流编程语言。
序号 | 企业 | 服务端主流编程语言 |
---|---|---|
1 | 阿里巴巴 | Java |
2 | 腾讯 | C++、Go |
3 | 字节跳动 | Go、Java、Python |
4 | 百度 | PHP,Python |
5 | 蚂蚁金服 | Java |
6 | 网易 | C++ |
7 | 京东 | Java |
8 | 美团 | Java,Go |
9 | 微软 | C++ |
10 | 中小厂 | Java |
框架是实现了某应用领域通用功能的底层服务。使用这种框架的软件开发者可以在通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类或组装对象来支持应用专用的行为。通俗地说,框架是完成了某种应用的半成品,它可以提供一些常用的工具类和基础通用化的组件,基于此,软件开发者可以专注于自身业务的开发。
针对部分主流服务端编程语言,下面是对应的常用框架,如下表所示。
序号 | 编程语言 | 常用框架 |
---|---|---|
1 | Java | Spring,Spring MVC,SpringBoot,Mybatis,Hibernate,Struts,Log4j |
2 | C++ | ASL,Boost,ffead-cpp,JUCE,Loki,Ultimate++,Dlib,Folly,libPhenom |
3 | Go | Gin,Gorm,Beego,Iris,Buffalo,Echo,GoFrame |
4 | Python | Django,Flask,Web2py,Bottle,Tornado,webpy |
集成开发环境 IDE
集成开发环境(Integrated Development Environment,IDE)是指用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。
集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。IDE 可以独立运行,也可以和其他程序并用。
一个集成开发环境的易用性,很大程度上除了编辑器本身的质量,还取决于对应插件生态丰富程度,在特定的开发场景下是否能找到易用的工具插件。
常用的IDE有以下两种
代码管理利器 Git
建模工具
信息时代,数据已悄然成为企业的核心资产,由于数据库是数据唯一的持久层,几乎所有的业务流程最终都依赖数据库中的数据,因此作为后端开发工程师,掌握数据库及数据存储技术尤为重要。
数据库:
中间件(Middleware)是一种应用于分布式系统的基础软件。
消息中间件
事务式中间件
数据中间件
操作系统
应用部署
容器化部署
运维监控与日志监控
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。