数据库|前端和后端分别是什么?( 二 )



而后端服务往往需要通过查询数据库 , 来完成对前端请求的响应 。

从这个类比你可以看出前端和后端的共性 , 都是通过调用一个比自己更靠后的服务来对前方的客户请求进行响应 。
后端工程师的工作范畴很广 , 几个比较常见的是 , 设计后端服务的API , 设计后端服务的架构图 , 设计后端服务的数据库 , 写代码实现后端服务的业务逻辑 , 同时还需要保证设计的后端服务highly available , 访问量很大时仍然保持不宕机 。 并对客户请求的响应时间短 , 或者吞吐量高 , 单位时间内能够处理的请求数量多 。
如果要从头搭建一个新的后端服务 , 那么整个过程需要进行大量的系统设计 , 也就是后端工程师面试会考到的System Design 。 做System Design非常考察平时的知识积累 。
后端工程师平时一般需要与哪些技术和工具打交道呢?
首先就是后端服务器 , 和前端服务器一样 , 后端服务器也可以由几乎任何一种编程语言实现 , 只要能把正确的数据返回给调用者即可 , 主流的编程语言也有各自流行的Web Framework , 也就是现成的轮子 , 帮助大家站在框架的肩膀上快速实现一个后端服务 。
比如基于java的web framework有spring boot和dropwizard , 基于javascript的有express , 基于python的有flask , 这几个web framework每一个都有大厂在使用 , 不同的公式具体选择那种框架 , 一定程度上是看公式创始工程师们最喜欢哪个编程语言 , 哪个框架用得最溜 。 还有一些后端服务的框架 , 可以支持你用多种语言来开发 , 而不是绑在特定一门语言上 。 比如gRPC这个远程调用框架 , 支持你用java、python、C++、Go等语言来开发 。
说了这么多语言和框架 , 如果你想去某个公司做后端开发 , 一定需要对他们用到的语言和框架熟练吗?
一般来讲 , 不会 。 我找工作时看到岗位描述里有我不会的语言或框架也无所谓 , 照样投 , 对公司来说你会其中一部分就够了 , 很多东西都是在工作里学的 。
而且事实上两周内上手一门新的编程语言是一名职业程序员的基本素养 。
除了开发和维护后端服务器 , 后端工程师还会花大量时间在数据库上 , 不管是为你的后端服务创建数据库 , 还是为数据库的性能调优 , 或者是分析里面的数据 。 目前最常用到的数据库是关系型数据库 。
比如在工业界被广泛使用的mySQL和postgreSQL , 如何设计一个关系型数据库 , 如何使用SQL query来访问数据 , 以及如何依靠index来为数据查询加速 , 这些知识点在学校里的数据库课程也有讲 , 然而学校的数据库课程里介绍比较少 , 近年来用得越来越多的是非关系型数据库 , 也就是大家常说的No-SQL , 比如基于Json文档的MongDB , 比如基于LSM tree的LeveIDB 。
这些数据库在某些特定情况下可能会比关系型数据库更适合你的业务需求 , 大家一般也是在工作中去学习它的原理和特性 。
数据库往往是一个后端系统里的性能瓶颈 , 也就是最慢的一环 , 因此 , 后端工程师在进行系统设计时会用很多办法 , 使得后端的性能 , 比如响应时间尽量少被数据库拖后腿 , 比如使用MemCached这种缓存系统来加速度后读取数据的速度 , 比如用kafka把数据写入异部化 , 提升后端写数据的性能 。
【数据库|前端和后端分别是什么?】后端开发大致就介绍到这里 , 后端开发的其他重要环节 , 比如性能监视、DevOps , 这里就略过不讲啦 。 希望对您有帮助!