从0搭建后端技术涉及到哪些知识点?

从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学习路线详细介绍

第一阶段: Java基础

学前导读:Java基础是入行Java、应对Java程序员面试必备的知识,好的开始等于成功的一半。打好Java基础才能真正成为Java开发的高手,学习Java企业级技术和项目也才能游刃有余。

本部分推荐两套精品Java基础入门课,可自由选择一套优秀视频学习:

1.Java入门经典教程【课程播放量300w+】

通过本视频的学习,让您从零开始,掌握 Java 开发的各种技术,再结合后续知识,最终达到企业对 Java 开发工程师的要求!

全套Java教程_Java基础入门视频教程,零基础小白自学Java必备教程

2.最新、最全、在最短时间教会最实用技术的Java基础视频【2021年新版】

讲解由浅到深、采用一线大厂真实需求驱动知识的学习,更清楚,更高效,更实用,没有废话!课程内置大量的案例实战,初学者可以学练合一,对Java语言形成完整体系,并能得到自己的心得,足以轻松应对薪酬30万+的Java基础面试。

Java入门基础视频教程(含Java项目和Java真题)

第二阶段: Java Web

学前导读:本阶段深入讲解JavaWeb核心技术,学完本阶段课程可以制作中小型网站和企业管理系统等。

1.JavaWeb

最全的JavaWeb阶段核心知识,包括MySQL数据库、JDBC、JavaWeb核心、前端技术、Tomcat、Linux、Ngnix。在系统学习核心技术点后,还能制作出旅游项目综合案例是入门Javaweb最合理、最省时的学习流程。

JavaWeb全套基础教程,java web从入门到项目实战(IDEA版javaweb)

第三阶段:Java开发框架

学前导读:本阶段为企业级服务端开发必备技能,可以优化之前web阶段学习内容,使开发网站和企业管理系统更加快捷,更加方便维护。

1.项目构建Maven

课程涵盖Maven技术从初级到高级各个层面的知识,各种开发技巧,帮你完成从开发界新人到成熟开发人员的华丽转职。

Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven

2.版本控制Git

从最基本的环境配置与安装到Git的基本操作,轻松应对Git在使用时遇到的常见问题。

Git全套教程,完整的git项目管理工具教程,一套精通git

3.SSM(Spring框架+SpringMVC+持久层框架Mybatis)

SSM是当今企业开发中必备基础框架,学习完该套课程,可以进行几乎所有功能性项目开发,例如购物网站、社交网站、办公系统等。

最全SSM框架教程|Spring+SpringMVC+MyBatis全套教程(spring+springmvc+mybatis)

4.Spring高级之注解驱动开发详解

通过简洁的注解配置,替代了早期Spring框架中大量的XML配置。本套课程就是由浅入深的通过Spring的注解驱动开发,来揭开SpringBoot封装的细节。并且,深入的分析了Spring的IoC、AOP以及事务管理的源码,同时加入了对Spring-mvc的源码分析,组成了Spring完整的全家桶源码讲解。

Spring注解开发教程,包含框架Spring+SpringMVC+SrpingTest+SpringData(事物)

5.持久层框架MybatisPlus

MyBatis-Plus在MyBatis的基础上做了增强,简化了开发,达到事半功倍的效果。本套课程全面讲解MyBatis-Plus的使用,从快速入门到原理分析再到插件的应用。

MybatisPlus深入浅出教程,快速上手mybatisplus

6.快速开发框架SpringBoot

SpringBoot作为快速构建Spring应用的技术现在已是企业开发的主流框架。本套课程全面讲解SpringBoot且将其原理也深入进行剖析讲解。学完这套课程后,可以应对企业级微服务开发。还可以对自研技术进行封装,集成进SpringBoot,为整体团队提供解决方案支持。

SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)

7. 单体项目开发传智健康【医疗行业】

传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、患者管理专业化、健康评估数字化、健康干预流程化、知识库集成化,增强管理者对健康管理机构运营情况的了解。 项目提供了权限、报表、分布式调用等多种解决方案。

Java项目《传智健康》,超完整的企业级医疗行业项目(基于SSM+Zookeeper+Dubbo+Spring Security技术栈)

第四阶段:中间件&服务框架

学前导读:本阶段汇集了当下热门的微服务框架,学完后可增加中级程序员的知识储备,为面试或将来技术的深入奠定良好的基础。

1.史上最全面的微服务全技术栈课程,学完这套就够了【2021年新版】

课程将Spring Cloud Alibaba、RabbitMQ、Docker、Redis、Elasticsearch等众多行业大厂必备技术一网打尽,稳固掌握,逐层提高!通过实用篇的学习就能掌握解决企业中常见的80%的问题,通过高级篇的学些掌握20%的难点、痛点,最后的面试篇助力解决面试难题。

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,史上最全面的springcloud微服务技术栈课程|Java微服务

如果只想补充微服务开发框架下的某一个技术,也可以按下面这个微服务技术点的路线图学习:

2.分布式开发框架Dubbo

学完这套课程后,可以应对企业级分布式项目中Dubbo的使用,并可以解决服务超时、重试、服务降级、集群容错等问题。

Dubbo快速入门,Java分布式框架必会的dubbo教程

3.分布式开发框架Zookeeper

本套课程全面讲解Zookeeper各种功能,配置管理、分布式锁、集群管理等,从Zookeeper命令和Java客户端两个角度操作Zookeeper,让开发者快速上手。学完这套课程后,可以在项目中快速落地使用Zookeeper,使用Zookeeper管理服务器集群、配置管理、分布式锁的复杂业务等。

Zookeeper视频教程,快速入门zookeeper技术

4.消息队列 RabbitMQ

本套课程从详细讲解了RabbitMQ各种工作模式,应用场景,还讲解了其高级特性如:可靠消息、死信队列、延迟队列、日志监控、消息补偿、消息幂等性、集群搭建等,全面切深入。不仅可以在项目中游刃有余的使用RabbitMQ,还可以解决各种消息队列使用过程中遇到的问题与瓶颈。

RabbitMQ全套教程,rabbitmq消息中间件到实战

5.消息队列 RocketMQ

阿里巴巴开源的RocketMQ,经过了双11这种高并发场景考验,其稳定性可靠的,且方便初学者快速上手。本套课程能够快速掌握分布式系统中消息中间件的各种应用场景,了解常见问题和解决方案及其原理,在应用实战中,快速掌握RocketMQ。

RocketMQ系统精讲,电商分布式消息中间件,硬核揭秘双十一

6.容器化Docker

本套课程详细讲解了Docker各部分组成的操作,Docker进程操作,镜像操作,容器操作,还详细讲解使用Dockerfile、Docker compose进行服务快速部署,让开发者快速上手Docker。

Docker容器化技术,从零学会Docker教程

7.NoSQL技术Redis

Redis是目前互联网世界公认的最为流行的 NoSQL数据库,Redis以其强大的数据处理效率在企业级数据高级处理领域一直占据着主流地位。本套课程超过50个案例场景贯穿整体课程,包含20多个企业实际问题,轻松搭建Redis集群,真正解决企业级开发三高(高并发、高性能、高可用)问题。

Redis入门到精通,Java企业级解决方案必看

8.NoSQL技术MongoDB

MongoDB是一个开源、高性能、无模式的文档型数据库。它可以解决需要存储数据量大、高并发读写、高可用的现实问题,适用于社交朋友圈、游戏积分、物流轨迹、商品评论等业务。架构成本较低,各方面却很优秀,MongoDB值得选择。

MongoDB基础入门到高级进阶,一套搞定mongodb

9.搜索技术Elasticsearch

全面的讲解Elasticsearch技术栈,最后融入实战,收集日志数据、服务器指标数据等,最终将分析的结果数据友好的展现出来。

java中级教程-ELK高级搜索,全面的讲解ElasticStack技术栈

第五阶段:企业级项目实战

学前导读:“项目经验”是企业了解人才能力的关键因素,为了更快更好地进入企业,就要选择真实、可靠、紧跟企业需要的项目课,沉浸不同阶段和规模的项目实战。

传智研究院自2016年起,每年持续投入课程研发资金以亿为单位计算,所研发项目库行业规模最大,单个项目业务完整,符合实际开发场景和业务需要。项目库覆盖19个行业场景,累计研发34个大型项目。

项目课能快速帮助学员获取行业经验,掌握核心业务需求及应对方案,以下项目课根据自己情况选择学习,学习结束后可拥有同行业2-3年的项目经验。

中、大型or开发平台SaaS项目(任选其一学习,助力获取行业经验)**

学完可快速构建企业级微服务应用项目,达到中、大型or开发平台SaaS工作技能要求。

1.品优购【电商项目】

品优购是一个综合性的 B2B2C 平台,类似京东商城、天猫商城,主要分为网站前台、运营商后台、商家管理后台三个子系统。 前端主要采用angularJS;后端主要采用Dubbox 、SpringMVC 、MyBatis框架。品优购电商项目采用Docker容器部署,对模板渲染技术、搜索技术、缓存系统、消息队列、单点登录CAS、跨域CORS、分布式ID、集群与负载均衡、分布式文件系统等内容都进行了深层次的讲解和应用。帮助学员快速掌握电商行业业务流程和解决方案。

就业班课程真实企业级实战项目《品优购电商系统开发》

2.SaaSiHRM【企业服务】

全行业第一个结合Activiti7工作流引擎的应用教程。iHRM是一款基于SaaS平台的人力资源管理平台,企业通过该平台可完成员工管理、审批管理、考勤管理、社保公积金的管理、薪资管理等功能,为企业的人力资源管理提供一站式解决方案。 提供了Spring全家桶、SPA工程构建、刷脸登录、Activiti工作流等10+热门解决方案。

Java项目SaaS移动办公完整版《iHRM 人力资源管理系统》,跨行业SaaS办公整合性解决方案

3.好客租房【生活服务】

好客租房是一个无中介化房屋租赁平台,包含房源智能推荐、地图找房、行情查询、电子合同、限时秒杀等功能。利用区块链技术去除中介的垄断地位,利用智能合约技术提高交易效率。采用Spring全家桶、分布式搜索服务、即时通信、容器化等15+技术解决方案,课程从入门到进阶,系统学习MybatisPlus、MongoDB、RocketMQ、Elasticsearch等热门技术。

Java项目《好客租房》,Java企业级解决方案(Spring全家桶+分布式解决方案+微信授权+爬虫解决方案等)

4.万信金融【金融行业】

万信金融采用国家政策允许的银行存管模式,为用户提供方便、快捷、安心的P2P金融服务。项目包括交易平台和业务支撑两个部分,采用先进的互联网分布式系统架构进行研发,保证了双方交易的安全性、快捷性及稳定性。 课程采用微服务技术、分布式系统配置、数据库分库分表、服务链路追踪等10+技术解决方案,带你轻松踏入金融行业!

Java项目《万信金融》企业级开发实战,全网最全面的Java互联网金融行业解决方案

5.闪聚支付【聚合支付】

闪聚支付是一个提供聚合支付的平台,通过线上聚合收银台(开放API),线下C2B一码多付、线下B2C商家扫码的方式开展业务。平台应以SaaS服务形式提供给各商户订单管理、门店管理、财务数据统计等基础服务,还以支付为入口,通过广告、营销、金融等服务,充分掌握RESTful+Dubbo 整合解决方案,微服务 统一认证、授权,SaaS用户体系等等10+解决方案。

Java大型分布式微服务闪聚支付项目,Java移动支付全生态系统,掌握大厂支付核心技术

三、 深度解决方案【通用领域】(选择目标行业学习)

在项目中,类似权限管理、短信这类功能,其整体实现思路基本一致,如果有一套通用的解决方案可以复用,就能有效减少资源的重复,缩短开发周期。

1.权限管理一体化解决方案

对于企业中的项目绝大多数都需要进行用户权限管理、认证、鉴权、加密、解密等。本套课程具备通用的用户管理、资源权限管理、组织机构管理、岗位管理、角色管理、菜单管理、监控管理、网关统一鉴权等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。通过学习能够熟练掌握微服务开发过程中涉及到的热门技术框架、中间件;掌握认证鉴权的设计方法和实现过程。

Java品达通用权限项目,基于SpringCloud SpringBoot 的微服务框架的权限管理解决方案

2.短信网关平台

随着企业业务扩张、短信规模化使用,现代企业对短信业务平台的要求已逐渐提高,统一入口,兼顾多种短信业务,成本低、操作与维护、高稳定、高可靠的移动信息化应用成为短信平台发展趋势。

本项目的核心在于保证短信高效、准确的送达、简单易操作的对接方式。通过对服务的解耦、通讯方式的升级来提升系统的吞吐量。同时在多通道的加持下,通过智能动态的通道评级、选举、降级、热插拔,增强了系统的健壮性,摆脱对单一通道的依赖,并且提供多种对接方式,满足企业内部的各种需求。

Java企业级项目《集信达短信平台》,从零打造高可用、大吞吐Java企业级短信平台解决方案

你可能感兴趣的:(java,开发语言,python,单元测试,测试工具)