服务器开发部署方式?,第1张

随着互联网技术的不断发展,我们在进行服务器开发方面也掌握了很多的开发部署技术。今天,昌平IT培训就给大家简单来介绍一下,都有哪些服务器开发部署方法是值得我们使用的。

停机部署

停机部署其实是简单粗暴的方式,就是简单地把现有版本的服务停机,然后部署新的版本。在一些时候,我们必需使用这样的方式来部署或升级多个服务。比如,新版本中的服务使用到了和老版本完全不兼容的数据表的设计。这个时候,我们对生产有两个变更,一个是数据库,另一个是服务,而且新老版本互不兼容,所以只能使用停机部署的方式。

这种方式的优势是,在部署过程中不会出现新老版本同时在线的情况,所有状态完全一致。停机部署主要是为了新版本的一致性问题。

这种方式不好的问题就是会停机,对用户的影响会很大。所以,一般来说,这种部署方式需要事前挂公告,选择一个用户访问少的时间段来做。

蓝绿部署

蓝绿部署与停机部署大的不同是,其在生产线上部署相同数量的新的服务,然后当新的服务测试确认OK后,把流量切到新的服务这边来。蓝绿部署比停机部署好的地方是,它无需停机。

我们可以看到这种部署方式,就是我们说的预发环境。在我以前的金融公司里,也经常用这种方式,生产线上有两套相同的集群,一套是Prod是真实服务的,另一套是Stage是预发环境,发布发Stage,然后把流量切到Stage这边,于是Stage就成了Prod,而之前的Prod则成了Stage。有点像换页似的。

这种方式的优点是没有停机,实时发布和升级,也避免有新旧版本同时在线的问题。但这种部署的问题就是有点浪费,因为需要使用双倍的资源(不过,这只是在物理机时代,在云计算时代没事,因为虚拟机部署完就可以释放了)。

另外,如果我们的服务中有状态,比如一些缓存什么的,停机部署和蓝绿部署都会有问题。

滚动部署

滚动部署策略是指通过逐个替换应用的所有实例,来缓慢发布应用的一个新版本。通常过程如下:在负载调度后有个版本A的应用实例池,一个版本B的实例部署成功,可以响应请求时,该实例被加入到池中。然后,版本A的一个实例从池中删除并下线。

这种部署方式直接对现有的服务进行升级,虽然便于操作,而且在缓慢地更新的过程中,对于有状态的服务也是比较友好的,状态可以在更新中慢慢重建起来。但是,这种部署的问题也是比较多的。

在发布过程中,会出现新老两个版本同时在线的情况,同一用户的请求可能在新老版中切换而导致问题。

读书使人进步,即使工作了,也要经常读一些经典的书籍来充实自己,作为一名一线开发者,下面将自己觉得不错的书籍进行推荐。

1TCP/IP详解(卷1)

由机械工业出版社出版,一个系列总共三卷,个人感觉卷一足矣。里面基本涵盖了网络的方方面面,是我们补充基础知识的良药,这里建议大家直接读英文版,遇到不认识的单词可以借助翻译工具还是很方便的,中文版读起来总是会有那么的一点点小别扭。

2TCP/IP网络编程

人民邮电出版,作者是韩国人,写的还是很不错的,可以作为一本很好的入门书籍,文中涉及到Windows和Linux两大平台网络编程基础知识,并以Linux为主,结尾是以HTTP服务器实例向我们介绍了网络编程的方方面面,豆瓣评分85,不失为一本经典的网络编程书籍。

下面是一本本人亲自整理的带目录的PDF书籍,如对这本书比较敢兴趣,欢迎私信+关注,我会在第一时间发送你。

3Unix网络编程

APUE、UNP基本上是Linux开发必读的“圣经”了,Unix网络编程,简称UNP,Linux环境下网络编程必读经典书籍。豆瓣评分飚至92,内容简介已经用到了传世之作这四个字,经典之处不必多说。内容也是非常的详尽,可以重点看看工作中常用到的部分,当做案头书,常来翻翻也是不错的,这里重点推荐下。

4Linux多线程服务端编程

电子工业出版社出版,他们家关于IT类的书籍还是很不错的,作者是大牛陈硕,以其开源的Muduo网络库为基础,讲解了Linux多线程服务端编程的知识,基本属于进阶性质了,阅读本书,不仅需要你有足够的C++功底,还有掌握一些C++11的知识,多线程、网络相关知识也是必备技能点。

基本上,看完这几本书,再加上工作中的实战,基本可以慢慢独当一面了。

最后,欢迎大家关注我的头条号,一个程序员的奋斗史,带你走进真正的程序员视角,分析IT知识。

Nginx确实是比较常用的技术(服务器)之一,不仅Java应用可以使用到,它可以应用在很多场景下。下面我就按照自己的理解,向大家介绍一下。

什么是Nginx

如果你是Java程序员,没用听说过Nginx的话,那么你肯定听说过Apache吧。Nginx也是一样,是一种WEB服务器。它有以下特点:

是使用C语言开发出来的,基于事件驱动架构,性能很高,高并发能力极强;

跨平台,可以运行在windows、Linux、Mac、Solaris等操作系统上;

第三方模块很多(生态环境好)。

那么我们再看看Nginx能做什么:

反向代理

这个概念大家一定很耳熟,那么在说反向代理之前,先看看什么是正向代理。

正向代理:我想访问谷歌,没办法直接访问,这时候找一个代理服务器,我通过代理服务器访问谷歌;正向代理特点是客户端知道要访问的服务器地址是什么;服务器不知道客户端是谁,正向代理-代理的是客户端;

反向代理:代理服务器接收互联网端的请求,转发请求到内网中的服务器(可能会是多台服务器中的一台),得到服务器的响应之后,再把响应返回给客户端;这时候客户端不知道服务器在哪,反向代理-代理的是服务端。

在一个项目的架构中,正向代理和反向代理可能同时存在。

负载均衡

因为Nginx可以做反向代理服务器,它可以把客户端的请求发送给服务器端;客户端的请求数量,就是负载量。

那么把负载量,按照一定的规则,分发给不同的服务器就行处理,这个就叫做负载均衡;负载均衡的好处,就是把压力平均到每一台服务器上。负载均衡的调度方法有:轮询,一个一个轮着发;ip_hash;url_hash;fair等。

总之,Nginx是常用的软件(服务器)之一,最好学习一下。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

一般来说,我们的网页代码编程都是基于一定的规则来完成编写的,而大部分的情况下我们采用也是utf的编辑规则。下面,北京电脑培训就通过案例分析来了解一下服务器开发可以使用哪些编码规则。

服务器开发适用哪些编程开发规则

那么什么是编码什么是UTF-8

我们都知道,计算机使用0和1来存储文本。比如字符“C”被存成“01000011”,那么计算机在显示这个字符时需要经过两个步骤:

计算机读取“01000011”,得到数字67,因为67被编码成“01000011”。

计算机在Unicode字符集中查找67,找到了“C”。

同样的:

我的电脑将“C”映射成Unicode字符集中的67。

我的电脑将67编码成“01000011”,并发送给Web服务器。

几乎所有的网络应用都使用了Unicode字符集,因为没有理由使用其他字符集。

Unicode字符集包含了上百万个字符。简单的编码是UTF-32,每个字符使用32位。这样做简单,因为一直以来,计算机将32位视为数字,而计算机在行的就是处理数字。但问题是,这样太浪费空间了。

UTF-8可以节省空间,在UTF-8中,字符“C”只需要8位,一些不常用的字符,比如“”需要32位。其他的字符可能使用16位或24位。一篇类似本文这样的文章,如果使用UTF-8编码,占用的空间只有UTF-32的四分之一左右。

MySQL的“utf8”字符集与其他程序不兼容,它所谓的“”,可能真的是一坨

MySQL简史

为什么MySQL开发者会让“utf8”失效我们或许可以从提交日志中寻找答案。

MySQL从41版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC3629)是随后才出现的。

旧版的UTF-8标准(RFC2279)多支持每个字符6个字节。2002年3月28日,MySQL开发者在一个MySQL41预览版中使用了RFC2279。

同年9月,他们对MySQL源代码进行了一次调整:“UTF8现在多只支持3个字节的序列”。

是谁提交了这些代码他为什么要这样做这个问题不得而知。在迁移到Git后(MySQL开始使用的是BitKeeper),MySQL代码库中的很多提交者的名字都丢失了。2003年9月的邮件列表中也找不到可以解释这一变更的线索。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 服务器开发部署方式?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情