在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
从0搭建后端技术涉及到哪些知识点?从零开始搭建,在创业公司没有完善的基础设施,需要从开源界,从云服务商甚至有些需要自己去组合去拼装去开发一个适合自己的组件或系统以达成我们的目标。
大后台的概念放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。
整个后台技术栈我的理解包括 4 个层面的内容:
语言:用了哪些开发语言,如:C++/Java/Go/PHP/Python/Ruby 等等;
组件:用了哪些组件,如:MQ 组件,数据库组件等等;
流程:怎样的流程和规范,如:开发流程,项目流程,发布流程,监控告警流程,代码规范等等;
系统:系统化建设,上面的流程需要有系统来保证,如:规范发布流程的发布系统,代码管理系统等;
从0搭建后端技术涉及的内容:
1、项目管理/Bug管理/问题管理
项目管理软件是整个业务的需求,问题,流程等等的集中地,大家的跨部门沟通协同大多依赖于项目管理工具。有一些 SaaS 的项目管理服务可以使用,但是很多时间不满足需求,此时我们可以选择一些开源的项目,这些项目本身有一定的定制能力,有丰富的插件可以使用。
2、DNS
DNS 是一个很通用的服务,创业公司基本上选择一个合适的云厂商就行了。
3、LB(负载均衡)
LB(负载均衡)是一个通用服务,一般云厂商的 LB 服务基本都会如下功能:支持四层协议请求(包括 TCP、UDP 协议);支持七层协议请求(包括 HTTP、HTTPS 协议);集中化的证书管理系统支持 HTTPS 协议。
4、CDN
CDN 现在已经是一个很红很红的市场,基本上只能挣一些辛苦钱,都是贴着成本在卖。国内以网宿为龙头,他们家占据整个国内市场份额的 40% 以上,后面就是腾讯,阿里。网宿有很大一部分是因为直播的兴起而崛起。
5、RPC 框架
维基百科对 RPC 的定义是:远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。
通俗来讲,一个完整的 RPC 调用过程,就是 Server 端实现了一个函数,客户端使用 RPC 框架提供的接口,调用这个函数的实现,并获取返回值的过程。
6、名字发现/服务发现
名字发现和服务发现分为两种模式,一个是客户端发现模式,一种是服务端发现模式。框架中常用的服务发现是客户端发现模式。所谓服务端发现模式是指客户端通过一个负载均衡器向服务发送请求,负载均衡器查询服务注册表并把请求路由到一台可用的服务实例上。现在常用的负载均衡器都是此类模式,常用于微服务中。
7、关系数据库
关系数据库分为两种,一种是传统关系数据,如 Oracle,MySQL,Maria,DB2,PostgreSQL 等等,另一种是 NewSQL。
8、NoSQL
NoSQL 顾名思义就是 Not-Only SQL,也有人说是 No – SQL,个人偏向于 Not-Only SQL,它并不是用来替代关系库,而是作为关系型数据库的补充而存在。
9、消息中间件
消息中间件在后台系统中是必不可少的一个组件,一般我们会在以下场景中使用消息中间件:
异步处理:异步处理是使用消息中间件的一个主要原因,在工作中最常见的异步场景有用户注册成功后需要发送注册成功邮件、缓存过期时先返回老的数据,然后异步更新缓存、异步写日志等等;通过异步处理,可以减少主流程的等待响应时间,让非主流程或者非重要业务通过消息中间件做集中的异步处理。
系统解耦:比如在电商系统中,当用户成功支付完成订单后,需要将支付结果给通知ERP系统、发票系统、WMS、推荐系统、搜索系统、风控系统等进行业务处理;这些业务处理不需要实时处理、不需要强一致,只需要最终一致性即可,因此可以通过消息中间件进行系统解耦。通过这种系统解耦还可以应对未来不明确的系统需求。
削峰填谷:当系统遇到大流量时,监控图上会看到一个一个的山峰样的流量图,通过使用消息中间件将大流量的请求放入队列,通过消费者程序将队列中的处理请求慢慢消化,达到消峰填谷的效果。
10、代码管理
代码是互联网创业公司的命脉之一,代码管理很重要,常见的考量点包括两块:安全和权限管理,将代码放到内网并且对于关系公司命脉的核心代码做严格的代码控制和机器的物理隔离;
代码管理工具,Git 作为代码管理的不二之选,你值得拥有。GitLab 是当今最火的开源 Git 托管服务端,没有之一,虽然有企业版,但是其社区版基本能满足我们大部分需求,结合 Gerrit 做 Code review,基本就完美了。当然 GitLab 也有代码对比,但没 Gerrit 直观。Gerrit 比 GitLab 提供了更好的代码检查界面与主线管理体验,更适合在对代码质量有高要求的文化下使用。
11、持续集成
持续集成简,称 CI(continuous integration),是一种软件开发实践,即团队开发成员经常集成他们的工作,每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。持续集成为研发流程提供了代码分支管理/比对、编译、检查、发布物输出等基础工作,为测试的覆盖率版本编译、生成等提供统一支持。
12、日志系统
日志系统一般包括打日志,采集,中转,收集,存储,分析,呈现,搜索还有分发等。一些特殊的如染色,全链条跟踪或者监控都可能需要依赖于日志系统实现。日志系统的建设不仅仅是工具的建设,还有规范和组件的建设,最好一些基本的日志在框架和组件层面加就行了,比如全链接跟踪之类的。
13、监控系统
监控系统只包含与后台相关的,这里主要是两块,一个是操作系统层的监控,比如机器负载,IO,网络流量,CPU,内存等操作系统指标的监控。另一个是服务质量和业务质量的监控,比如服务的可用性,成功率,失败率,容量,QPS 等等。常见业务的监控系统先有操作系统层面的监控(这部分较成熟),然后扩展出其它监控,如 Zabbix,小米的 Open-Falcon,也有一出来就是两者都支持的,如 Prometheus。如果对业务监控要求比较高一些,在创业选型中建议可以优先考虑 Prometheus。
14、配置系统
随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、降级开关,灰度开关,参数的配置、服务器的地址、数据库配置等等,除此之外,对后台程序配置的要求也越来越高:配置修改后实时生效,灰度发布,分环境、分用户,分集群管理配置,完善的权限、审核机制等等,在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。
15、发布系统/部署系统
从软件生产的层面看,从开发人员写下代码到服务最终用户是一个漫长过程,整体可以分成三个阶段:从代码(Code)到成品库(Artifact)这个阶段主要对开发人员的代码做持续构建并把构建产生的制品集中管理,是为部署系统准备输入内容的阶段。
从制品到可运行服务 这个阶段主要完成制品部署到指定环境,是部署系统的最基本工作内容。
从开发环境到最终生产环境 这个阶段主要完成一次变更在不同环境的迁移,是部署系统上线最终服务的核心能力。
发布系统集成了制品管理,发布流程,权限控制,线上环境版本变更,灰度发布,线上服务回滚等几方面的内容,是开发人员工作结晶最终呈现的重要通道。开源的项目中没有完全满足的项目,如果只是 Web 类项目,Walle、Piplin 都是可用的,但是功能不太满足,创业初期可以集成 Jenkins + Gitlab + Walle(可以考虑两天时间完善一下),以上方案基本包括制品管理,发布流程,权限控制,线上环境版本变更,灰度发布(需要自己实现),线上服务回滚等功能。
16、跳板机
跳板机面对的是需求是要有一种能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范来不断提升IT内控的合规性,能对运维人员操作行为的进行控制和审计,对误操作、违规操作导致的操作事故,快速定位原因和责任人。其功能模块一般包括:帐户管理、认证管理、授权管理、审计管理等。
17、机器管理
机器管理的工具选择的考量可以包含以下三个方面:是否简单,是否需要每台机器部署 Agent(客户端)
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java基础学习之File类笔记整理
在小白入门Java基础的学习道路上,File类是必须要接触的一个知识点。为了方便大家学习并应用File类,本文为大家整理汇总了File类的相关知识点,内容包括File类概述和构造方法、File类创建功能、File类判断和获取功能和File类删除功能。下面我们一起来梳理一遍笔记的内容吧!
4410
2019-12-11 16:25:25
C语言和Java哪个更适合初学者?
目前,无论是从应用范围还是流行程度来看,C语言和Java都是当下最为火热的编程语言。想要零基础入门编程的学习者在一开始的学习中都会碰到这样的难题:C语言和Java哪个更适合初学者?的确,编程语言的选择关系到学习者未来的职业选择,因此需要慎重决定。当然无论是C语言还是Java,只要学好了,其职业生涯都将有着极其广阔的前景。下面我们来看看初学者应该如何在C语言和Java中进行选择。
5447
2020-03-17 15:50:03
参加Java培训可以从事什么工作?
Java 是一项用于开发应用程序的技术,可以让 Web 变得更有意思和更实用。Java使用广泛,功能强大,得到了越来越多人的关注。很多年轻人投身于此,但是参加Java培训究竟可以从事哪方面的工作呢?
4151
2020-03-26 22:21:30
现在学Java有前途吗?Java岗位饱和了吗?
学Java前途是有的,Java流行的网络编程语言之一,比较不错的语言,java语言在当今信息化社会中发挥着重要的作用。学历是门槛,初中高中学历建议先提升学历。Java行业的竞争激烈,应用领域和发展前景广泛。现在学Java还不晚,要知道Java有一定的门槛,技术更新的比较快,需要选择与企业需求匹配的Java课程内容。
3747
2020-10-21 17:12:56
MySQL数据库as和distinct关键字怎么用?代码怎么写?
MySQL数据库as和distinct关键字怎么用?代码怎么写?使用SQL语句显示结果时,在屏幕显示的字段名不具备良好的可读性,我们可以使用 as 给字段起一个别名。在很多重复数据想要对其中重复数据行进行去重操作可以使用 distinct。
2887
2022-01-12 16:13:57