服务端开发常用技术

  • 招聘要求:

1.熟悉linux开发环境,熟练掌握c/c++,熟悉网络和多线程编程,熟练使用GCC、GDB等开发工具;
2.熟悉python以及hadoop等分布式计算平台;
3.优秀的学习能力,对数据结构;算法分析.计算机系统结构.操作系统.网络等计算机基础具备扎实的功底;
4.熟悉LAMP开发架构。
5.了解MySQL等传统数据库及NoSQL或MongoDB等非关系型数据库者优先考虑;
6.具有机器学习算法相关知识,如朴素贝叶斯、决策树、支持向量机、Logistic回归者优先考虑;
7.善于思考、自我驱动,突破创新、不畏艰难,敢于承诺并完成目标;
8.具备以下条件者优先考虑:
(1)熟悉TCP/IP协议,及互联网常见应用和协议的原理;
(2)熟悉LVS或其他负载均衡系统原理;
(3)有DPDK/NETMAP等相关开发经验;
(4)了解openstack/kubernetes网络结构与原理,有相关实践经验。
a)了解网络安全/系统安全基础知识,有相关工具系统开发和实施经验。
b)了解nginx.redis.storm等开源软件;
c) 有数据库开发,网络编程方面经验者;
d)有linux操作系统开发使用经验者;
e)有脚本语言lua,perl,python开发经验者;
f)有Windows编程经验,有GDI,GDI+,DirectX,等客户端开发技术。
g)熟悉关系型和非关系型数据库,有数据库设计调优经验;
h)有良好的编码习惯,能写出高内聚、低耦合的代码,理解设计模式;
i)理解分布式系统原理和微服务架构,理解DevOps方法;

  • LAMP开发架构

LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:

  • Linux,操作系统
  • Apache,网页服务器
  • MariaDB或MySQL,数据库管理系统(或者数据库服务器)
  • PHP、Perl或Python,脚本语言

虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的廉价和普遍,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的“解决方案包”(Solution Packages)。其他的方案包有苹果的WebObjects(最初是应用服务器),Java/J2EE和微软的.NET架构。
和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点;与微软的 .NET 架构相比,LAMP具有通用、跨平台、高性能、低价格的优势。因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
Apache 是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。
PHP 是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
开源的数据库中,MySQL 在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。
“LAMP包”的脚本组件中包括了CGI web接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言。

  • Linux服务器集群系统–LVS(Linux Virtual Server)

官方中文文档:http://www.linuxvirtualserver.org/zh/
Linux负载均衡软件LVS之一(概念篇):http://ixdba.blog.51cto.com/2895551/552947
Linux负载均衡软件LVS之二(安装篇):http://ixdba.blog.51cto.com/2895551/554029
Linux负载均衡软件LVS之三(配置篇):http://ixdba.blog.51cto.com/2895551/554799
Linux负载均衡软件LVS之四(测试篇):http://ixdba.blog.51cto.com/2895551/555738

  • Redis
    Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。根据月度排行网站DB-Engines.com的数据显示,Redis是最流行的键值对存储数据库。
    维基百科:https://zh.wikipedia.org/wiki/Redis

  • NoSQL

    NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。
    两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。
    当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体。[5]关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。
    NoSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况​​下,增加了补充中间件层(例如,CloudTPS)[6]。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable[7],和滑铁卢大学开发的HBase[8]。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式ACID交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。
    少数NoSQL系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。
    维基百科:https://zh.wikipedia.org/wiki/NoSQL

  • MongoDB
    MongoDB是一种文档导向的数据库管理系统,由C++撰写而成,以此来解决应用程序开发社区中的大量现实问题。2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
    MongoDB可以从开放源代码来建构与安装,更常见的是安装二进制档,目前有Windows、Linux、OS X和Solaris版本。许多Linux包管理系统现在已包含了MongoDB的包,包括CentOS和Fedora,[3] Debian和Ubuntu,[4] Gentoo[5]以及Arch Linux。[6] 同样可从官方网站获取。[7]
    MongoDB使用内存映射文件, 32位系统上限制大小为2GB的数据(64位支持更大的数据)。[8] MongoDB服务器只能用在小端序系统,虽然大部分公司会同时准备小端序和大端序系统。
    维基百科:https://zh.wikipedia.org/wiki/MongoDB

你可能感兴趣的:(linux服务端开发)