序列號相關總結和學習

摘要

最近有多個項目出現過因爲序列號導致系統吞吐量上不去
性能下降的情況. 
晚上想着學習總結一下, 已備忘, 避免後續繼續掉坑裏. 
學習資料來源:
https://cdn.modb.pro/db/516085
https://www.cnblogs.com/diabloxl/p/3623640.html

序列號-正版-盜版-開源-商業版

首先一般商業的閉源軟件纔有序列號.

開源軟件一般是沒有序列號的, 但是一般會有一個開源協議的生命文件.
開源協議一般大體可以分爲商業友好和商業不好有. 
一般學校學術派相關的開源協議比較商業友好,比如BSD還有MIT協議. 
GPL或者是LGPL協議一般對商業不是很友好. 會要求必須繼續開源. 

開源軟件背後的公司一般會有商業版的同檔次開源軟件出來
一般採用訂閱制或者是收取服務費的商業模式(開源作者寫書也是一個商業方式)
比如nginx對應F5的nginx-plus  redis對應redis labs的商業版軟件
或者是類似IBM的redhat rhel操作系統. 因爲開源協議的要求才會開放源碼製作CentOS

商業版軟件一般會有更高級的特性和一定的商業代碼,性能穩定性和能夠支持的極限更高.
有條件還是需要上商業版的軟件, 更有安全和性能保障. 

比如國內的OpenEuler還有Anolis兩種開源操作系統
華爲和阿里都承諾不自己發行商業版, 僅維護開源版本
商業版由生態裏面的比如: 統信,中科方德,銀河麒麟去發行和賺取利潤. 
也可以他更好的支持與現場服務, 只有賺取足夠的利潤纔可以有高級人才提供服務. 

序列號-正版-盜版-開源-商業版

商業軟件爲了最大化利潤一般採用多級別序列號的方式:
一般採用:
學生(家庭版)-標準版-企業版-旗艦版(無限制)的授權級別
價格從低到高. 
一般都是一套標準介質進行安裝, 通過不同的序列號增加硬件或者是軟件的資源限制. 

因爲正版軟件價格昂貴(微軟就是曾經開源屆最大公敵)
很多時候盜版軟件非常猖獗. 
盜版軟件其實存在非常多的風險:
1. 出現問題商業廠商不會提供服務,會要求按照名目價格購買服務並且購買到場服務纔會入場維護.
2. 盜版軟件可能會被認爲植入木馬,或者是其他惡意軟件,可能會造成不必要的安全和財產風險. 
3. 很多軟件雖然有盜版,但是依舊可能有數據蒐集上報機制,容易導致公司處於法務風險的境地. 

曾經網絡上一個Oracle11.2.0.4的安裝介質就被人爲插入安裝180天后 隨機刪除系統表的惡意腳本.
很多不法數據庫運維人員會藉此高價進行維護,賺取大額利潤
也有因爲使用盜版軟件導致自己數據庫被勒索的情況發生. 

所以在有可能的情況下 儘量使用官方鏡像源. 儘量使用正版,不要使用來路不明的軟件
安裝軟件時務必使用 md5 進行check 避免被人投毒. 

操作系統序列號- Windows爲例

本次以 Windows2012爲例進行說明
(家裏公司裏都上不去外網..之前截圖過的)

image


操作系統序列號

1. 不同版本的處理器芯片和內存限制是不同的. 
2. 用戶以及其他限制也是不一樣的. 
3. 越高級的版本 使用資源越多的序列號價格越昂貴.
4. 理論上一臺高配置服務器,如果購買不打折的商業版系統,可能軟件的授權比硬件更加昂貴. 
5. 建議合理的進行授權管理, 避免資源無法正常使用. 導致資源浪費和系統瓶頸. 

數據庫序列號

本次以SQLSERVER數據庫爲例說明. 
其他數據庫也有類似的問題:
1. SQLSERVER分爲express版本,開發板,企業版,數據中心版等. 
2. express 版本不收取費用,但是無法用於生產,並且數據文件大小和備份恢復都有嚴格限制. 
3. 開發板也缺少很多核心高級的數據庫特性,無法用於生產
4. 企業版和數據中心版是可以用於生產的版本
5. 但是授權模式也分爲CAL版本和Core base的版本
● “每處理器”或“每內核”模式
SQL Server 2012開始,授權模式進行了調整。按“每內核”(Per Core)計數,
同時還需要計算物理處理器(插槽)的數量,單個插槽最低需要購買4個內核的授權。
這一授權模式可以很好的簡化授權的複雜程度,不用統計有多少用戶(或者設備)會訪問 SQL Server,
以及是防火牆內部還是來自Internet的外部連接。
這種模式可以使用最多的CPU內核.
● “Server+CAL”模式
CAL 即客戶端訪問許可(Client Access License),分爲設備訪問許可(Device CAL)
和用戶訪問許可(User CAL)兩類。SQL Server 及其組件(例如報表服務)提供服務,
即爲服務端;客戶端則是訪問這些服務的設備或用戶。
選用“Server+CAL”模式的用戶,需要在服務器端採購 SQL Server 服務器許可,
併爲客戶端購買 CAL。每個客戶端只需要一份 CAL 就可以訪問本企業中數量不限的 SQL Server 實例。

CAL的模式最多可以使用 20個物理核心,或者是40個虛擬核心. 會導致性能衰退. 

國產數據庫的序列號

不管是達夢-瀚高-人大金倉-神通
都是商業數據庫, 都是需要有序列號的
建議生產環境序列號至少選用企業版, 最好不要有CPU和內存資源限制.
避免導致環境異常, 雖然有一些合同可能會包含數據庫的安裝採購.
但是建議這一塊最好有合作伙伴進行處理. 
非專業人士處理數據庫非常危險.(我認爲我的水平就不夠專業)

我們也出現過因爲序列號到期 64核心的服務器僅能夠使用單核心導致嚴重的性能衰退和相應不及時. 
另外數據庫服務器大部分序列號都是基於CPU核心數進行計算, 建議使用物理機,並且建議使用高頻率的CPU
避免投資浪費. 

關於數據庫版本

剛纔談到序列號,也談到了數據庫版本.
在市場經濟模式下. 雖然可以貨比三家進行對照
但是終歸一點, 便宜的不好, 好的不便宜. 羊毛總歸處在羊身上. 

談到有客戶因爲sqlserverCAL序列號導致性能衰退.
也談到有信創客戶因爲信創數據庫的序列號導致資源利用率上不去. 

其實數據庫的版本也是一個很大的考量:
比如Oracle的企業版就缺少 分區表的特性. 
會導致很多高級功能無法使用. 
MySQL的商業版本就會帶各種監控調優軟件,能夠極大的提高生產力.
Redis的企業版也是如此,一方面穩定,一方面也能夠提高發現定位問題的能力. 

基於此建議生產還是使用高版本,高配置的數據庫環境.

序列號引起的虛擬化與物理機的討論

1. 數據庫是非常不建議使用虛擬機的.
   虛擬化的一層會導致資源損耗, 雖然有vt-x和vt-d兩種特權指令可以實現直通設備
   但是依舊會有一些其他損耗在裏面,並且無法最大化資源使用率.
   建議數據庫還是使用物理機更加優秀一些.
2. 因爲商業版都是綁定CPU的, 虛擬化的一層會導致CPU被其他軟件搶佔, 會出現類似於
   超售導致的性能衰退,不利於分析分析與判斷. 
   也是建議使用物理機, 直接使用物理機的資源,能夠最大化投入產出. 

關於JDK,中間件,以及APM

Oracle JDK理論上要比OpenJDK要優秀很多. 
雖然Adopt公司一直努力改進, 但是因爲Oracle收購sun的技術專利以及商業代碼
導致Adopt公司很多地方是受到Oracle的限制的.

可以參見谷歌與Oracle因爲十幾行Java代碼導致的80多億美元的世紀官司. 

中間件也是如此, 雖然tomcat 能夠實現很多場景,但是websphere和weblogic 賣這麼貴肯定是有
他的金剛鑽的. 開源可以做到比較好,但是需要更多的硬件和更聰明的開源大拿進行優化. 

這一點可以參加當時給 王垠打3.5的趙海平的履歷.
在facebook將php這種解釋性語言添加類似於AOT特性, 減少一半的物理服務器的使用.
不管是電費還是設備採購和維護都帶來了幾十上百億美元的效益(HipHop For PHP)

總結

性能問題有非常多非常複雜的種類, 序列號與版本僅是很小並且很容易解決的一個. 
其實的性能問題其實才是產品更應該盡力去解決和重視的. 
而且爲客戶提供數字服務的公司必須視技術是第一要務的
應該能夠或者至少應該有站在技術一線的能力與想法.
重視人才,減少不必要的內耗,尊重規範,尊重技術的發展與規律. 
遇到問題應該得有解決問題的想法與動力.不能處處想着得與失. 
如果使用開源應該真正做到反哺開源社區,共同發展與輝煌. 
應該給予人才尊重與應有的待遇. 
不能只看ppt只看考試只看口才的. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章