分类目录归档:article

用户、组和容器的 LDAP 过滤器和属性案例

摘自: https://docs.oracle.com/html/E35191_01/ldap-filters-attrs-users.html

C.2. 用户、组和容器的 LDAP 过滤器和属性

C.2.1. 用户、组和容器的默认 LDAP 过滤器和属性
C.2.2. 用户、组和容器的 Active Directory 设置
C.2.3. 用户、组和容器的 Oracle Directory Server Enterprise Edition 设置
C.2.4. 用户、组和容器的 OpenDS 设置
C.2.5. 用户、组和容器的 OpenLDAP 设置
C.2.6. 用户、组和容器的 Novell eDirectory 设置

Oracle VDI Manager 名称 CLI 属性名称 说明
用户过滤器 ldap.user.object.filter 用于标识用户类型对象的 LDAP 过滤器。
用户搜索过滤器 ldap.user.search.filter 用于根据搜索条件搜索用户的 LDAP 过滤器。可以使用 user-search 命令或在 Oracle VDI Manager 中完成用户搜索。$SEARCH_STRING 是搜索条件的占位符。
用户 ID 属性 ldap.userid.attributes 以逗号分隔的 LDAP 属性列表,其中存储用户对象的用户 ID 值。用于在给定用户 ID 的情况下查找用户。
用户成员属性 ldap.user.member.attributes 某一用户对象的以逗号分隔的 LDAP 属性列表,其中存储该用户所属的组。
用户短属性 ldap.user.short.attributes 某一用户对象可在组成员属性中使用的 LDAP 属性的逗号分隔列表。
组过滤器 ldap.group.object.filter 用于标识组类型对象的 LDAP 过滤器。
组搜索过滤器 ldap.group.search.filter 用于根据搜索条件搜索组的 LDAP 过滤器。可以使用 user-search 命令或者在 Oracle VDI Manager 中执行对组的搜索。$SEARCH_STRING 是搜索条件的占位符。
组成员属性 ldap.group.member.attributes 某一组对象的以逗号分隔的 LDAP 属性列表,其中存储该组的用户成员。
组短属性 ldap.group.short.attributes 可以在用户成员属性中使用的组对象上的 LDAP 属性的逗号分隔列表。此属性通常用于特定于 Active Directory 的主要组成员关系。
容器对象过滤器 ldap.container.object.filter 用于标识容器类型对象的 LDAP 过滤器。在 Oracle VDI Manager 中,可将容器选作定制组过滤器的根。
容器搜索过滤器 ldap.container.search.filter 在为定制组过滤器选择根时,Oracle VDI Manager 用来根据搜索条件搜索容器的 LDAP 过滤器。$SEARCH_STRING 是搜索条件的占位符。
默认属性 ldap.default.attributes 查找对象时在高速缓存中加载的以逗号分隔的 LDAP 属性的列表。其中应包含其他过滤器和属性列表中使用的所有属性。

C.2.1. 用户、组和容器的默认 LDAP 过滤器和属性

下表包含用户、组和容器的默认 LDAP 过滤器和属性。

Oracle VDI Manager 名称 默认值
用户过滤器 (&(|(objectclass=user)(objectclass=person)(objectclass=inetOrgPerson) (objectclass=organizationalPerson))(!(objectclass=computer)))
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING) (userPrincipalName=$SEARCH_STRING)(mail=$SEARCH_STRING))
用户 ID 属性 uid,sAMAccountName,userPrincipalName,mail
用户成员属性 memberof,primaryGroupID
用户短属性
组过滤器 (|(objectclass=group)(objectclass=groupofnames) (objectclass=groupofuniquenames))
组搜索过滤器 (|(dc=$SEARCH_STRING)(o=$SEARCH_STRING)(ou=$SEARCH_STRING) (cn=$SEARCH_STRING)(uid=$SEARCH_STRING)(mail=$SEARCH_STRING))
组成员属性 member,uniquemember
组短属性 primaryGroupToken
容器对象过滤器 (|(objectclass=domain)(objectclass=organization) (objectclass=organizationalUnit)(objectclass=container))
容器搜索过滤器 (|(cn=$SEARCH_STRING)(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,o,ou,cn,uid,mail,member,uniquemember,memberof,sAMAccountName, primaryGroupToken,primaryGroupID

C.2.2. 用户、组和容器的 Active Directory 设置

下表包含用户、组和容器的 Active Directory 的建议设置。

如果您对用户标识使用 userPrincipalName 属性或 mail 属性,请在以下设置中使用此属性而不是 sAMAccountName

Oracle VDI Manager 名称 建议设置
用户过滤器 (&(objectclass=user)(!(objectclass=computer)))
用户搜索过滤器 (|(cn=$SEARCH_STRING)(sAMAccountName=$SEARCH_STRING))
用户 ID 属性 sAMAccountName
用户成员属性 memberof,primaryGroupID
用户短属性
组过滤器 (objectclass=group)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 member
组短属性 primaryGroupToken
容器对象过滤器 (objectclass=container)
容器搜索过滤器 (cn=$SEARCH_STRING)
默认属性 cn,member,memberof,sAMAccountName,primaryGroupToken,primaryGroupID

C.2.3. 用户、组和容器的 Oracle Directory Server Enterprise Edition 设置

下表包含用户、组和容器的 Oracle Directory Server Enterprise Edition 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofuniquenames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 uniquemember
组短属性
容器对象过滤器 (|(objectclass=domain)(objectclass=organizationalUnit))
容器搜索过滤器 (|(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,ou,cn,uid,uniquemember,memberof

C.2.4. 用户、组和容器的 OpenDS 设置

下表包含用户、组和容器的 OpenDS 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofuniquenames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 uniquemember
组短属性
容器对象过滤器 (|(objectclass=domain)(objectclass=organizationalUnit))
容器搜索过滤器 (|(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,ou,cn,uid,uniquemember,memberof

C.2.5. 用户、组和容器的 OpenLDAP 设置

下表包含用户、组和容器的 OpenLDAP 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 从默认过滤器中删除 (!(objectclass=computer))。改用 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofnames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 member
组短属性
容器对象过滤器
容器搜索过滤器
默认属性 cn,uid,member,memberof

C.2.6. 用户、组和容器的 Novell eDirectory 设置

下表包含用户、组和容器的 Active Directory 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 您必须从默认过滤器中删除 (!(objectclass=computer))。建议设置为 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING)(givenName=$SEARCH_STRING))
用户 ID 属性 givenName,cn,uid
用户成员属性 groupMembership
用户短属性
组过滤器 (|(objectclass=group)(objectclass=groupofnames)(objectclass=groupofuniquenames))
组搜索过滤器
组成员属性 member,uniquemember
组短属性
容器对象过滤器 (objectclass=organizationalUnit)
容器搜索过滤器
默认属性 cn,uid,givenName,groupmembership,member,uniquemember

Apache Bench (ab)

yum install -y httpd-tools

ab -c 10 -n 100 http://www.example.com/index.php

-c10 表示并发用户数为10
-n100 表示请求总数为100

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.199.85 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:
Server Hostname: 192.168.199.85
Server Port: 3814

Document Path: /portals/index
Document Length: 11999 bytes HTTP响应数据的正文长度

Concurrency Level: 200
Time taken for tests: 2.132 seconds 所有这些请求处理完成所花费的时间 
Complete requests: 1000 完成请求数 
Failed requests: 0 失败请求数 
Write errors: 0
Total transferred: 12136000 bytes 网络总传输量 
HTML transferred: 11999000 bytes HTML内容传输量
Requests per second: 469.10 #/sec 吞吐量-每秒请求数
Time per request: 426.350 ms 服务器收到请求,响应页面要花费的时间
Time per request: 2.132 [ms] (mean, across all concurrent requests) 并发的每个请求平均消耗时间
Transfer rate: 5559.55 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 26 136.7 1 1006
Processing: 6 364 295.5 297 1741
Waiting: 3 353 297.1 286 1740
Total: 7 391 330.3 308 1980


Percentage of the requests served within a certain time (ms)
50% 308 50% 的用户响应时间小于 308 毫秒 
66% 450 80 % 的用户响应时间小于 450 毫秒
75% 552
80% 618
90% 832
95% 1028
98% 1354
99% 1650
100% 1980 (longest request) 最大的响应时间小于 2000 毫秒 

links:
http://httpd.apache.org/docs/2.4/programs/ab.html

Top-Level Domain (TLD)

Generic Top-level Domains (gTLDs)

Generic top-level domains are the common domain names you're likely most familiar with. These are open for anyone to register domain names under:

  • .com (commercial)
  • .org (organization)
  • .net (network)
  • .name (name)
  • .biz (business)
  • .info (information)

Additional gTLDs are available that are called sponsored top-level domains, and are considered restricted because certain guidelines must be met before they can be registered:

  • .int (international): Used by international organizations for treaty-related purposes, and requires a United Nations registration number
  • .edu (education): Limited to educational institutions only
  • .gov (government): Limited to U.S. governmental entities only
  • .mil (military):  Limited to the U.S. military only
  • .jobs (employment): Must be registered under the legal name of a company or organization
  • .mobi (mobile): Might have to adhere to mobile-compatible guidelines
  • .tel (Telnic): Limited to hosting related to contact information, not websites

Country Code Top-level Domains (ccTLD)

Countries and territories have a top-level domain name available that's based on the country's two-letter ISO code. Here are some examples of popular country code top-level domains:

  • .us: United States
  • .ca: Canada
  • .nl: Netherlands
  • .de: Germany
  • .fr: France
  • .ch: Switzerland
  • .cn: China
  • .in: India
  • .ru: Russia
  • .mx: Mexico
  • .jp: Japan
  • .br: Brazil

The official, exhaustive list of every generic top-level domain and country code top-level domain is listed by the Internet Assigned Numbers Authority (IANA).

CodeCountry name (using title case)YearccTLDISO 3166-2
ADAndorra1974.adISO 3166-2:AD
AEUnited Arab Emirates1974.aeISO 3166-2:AE
AFAfghanistan1974.afISO 3166-2:AF
AGAntigua and Barbuda1974.agISO 3166-2:AG
AIAnguilla1985.aiISO 3166-2:AI
ALAlbania1974.alISO 3166-2:AL
AMArmenia1992.amISO 3166-2:AM
AOAngola1974.aoISO 3166-2:AO
AQAntarctica1974.aqISO 3166-2:AQ
ARArgentina1974.arISO 3166-2:AR
ASAmerican Samoa1974.asISO 3166-2:AS
ATAustria1974.atISO 3166-2:AT
AUAustralia1974.auISO 3166-2:AU
AWAruba1986.awISO 3166-2:AW
AXÅland Islands2004.axISO 3166-2:AX
AZAzerbaijan1992.azISO 3166-2:AZ
BABosnia and Herzegovina1992.baISO 3166-2:BA
BBBarbados1974.bbISO 3166-2:BB
BDBangladesh1974.bdISO 3166-2:BD
BEBelgium1974.beISO 3166-2:BE
BFBurkina Faso1984.bfISO 3166-2:BF
BGBulgaria1974.bgISO 3166-2:BG
BHBahrain1974.bhISO 3166-2:BH
BIBurundi1974.biISO 3166-2:BI
BJBenin1977.bjISO 3166-2:BJ
BLSaint Barthélemy2007.blISO 3166-2:BL
BMBermuda1974.bmISO 3166-2:BM
BNBrunei Darussalam1974.bnISO 3166-2:BN
BOBolivia (Plurinational State of)1974.boISO 3166-2:BO
BQBonaire, Sint Eustatius and Saba2010.bqISO 3166-2:BQ
BRBrazil1974.brISO 3166-2:BR
BSBahamas1974.bsISO 3166-2:BS
BTBhutan1974.btISO 3166-2:BT
BVBouvet Island1974.bvISO 3166-2:BV
BWBotswana1974.bwISO 3166-2:BW
BYBelarus1974.byISO 3166-2:BY
BZBelize1974.bzISO 3166-2:BZ
CACanada1974.caISO 3166-2:CA
CCCocos (Keeling) Islands1974.ccISO 3166-2:CC
CDCongo, Democratic Republic of the1997.cdISO 3166-2:CD
CFCentral African Republic1974.cfISO 3166-2:CF
CGCongo1974.cgISO 3166-2:CG
CHSwitzerland1974.chISO 3166-2:CH
CICôte d'Ivoire1974.ciISO 3166-2:CI
CKCook Islands1974.ckISO 3166-2:CK
CLChile1974.clISO 3166-2:CL
CMCameroon1974.cmISO 3166-2:CM
CNChina1974.cnISO 3166-2:CN
COColombia1974.coISO 3166-2:CO
CRCosta Rica1974.crISO 3166-2:CR
CUCuba1974.cuISO 3166-2:CU
CVCabo Verde1974.cvISO 3166-2:CV
CWCuraçao2010.cwISO 3166-2:CW
CXChristmas Island1974.cxISO 3166-2:CX
CYCyprus1974.cyISO 3166-2:CY
CZCzechia1993.czISO 3166-2:CZ
DEGermany1974.deISO 3166-2:DE
DJDjibouti1977.djISO 3166-2:DJ
DKDenmark1974.dkISO 3166-2:DK
DMDominica1974.dmISO 3166-2:DM
DODominican Republic1974.doISO 3166-2:DO
DZAlgeria1974.dzISO 3166-2:DZ
ECEcuador1974.ecISO 3166-2:EC
EEEstonia1992.eeISO 3166-2:EE
EGEgypt1974.egISO 3166-2:EG
EHWestern Sahara1974ISO 3166-2:EH
EREritrea1993.erISO 3166-2:ER
ESSpain1974.esISO 3166-2:ES
ETEthiopia1974.etISO 3166-2:ET
FIFinland1974.fiISO 3166-2:FI
FJFiji1974.fjISO 3166-2:FJ
FKFalkland Islands (Malvinas)1974.fkISO 3166-2:FK
FMMicronesia (Federated States of)1986.fmISO 3166-2:FM
FOFaroe Islands1974.foISO 3166-2:FO
FRFrance1974.frISO 3166-2:FR
GAGabon1974.gaISO 3166-2:GA
GBUnited Kingdom of Great Britain and Northern Ireland1974.gbISO 3166-2:GB
(.uk)
GDGrenada1974.gdISO 3166-2:GD
GEGeorgia1992.geISO 3166-2:GE
GFFrench Guiana1974.gfISO 3166-2:GF
GGGuernsey2006.ggISO 3166-2:GG
GHGhana1974.ghISO 3166-2:GH
GIGibraltar1974.giISO 3166-2:GI
GLGreenland1974.glISO 3166-2:GL
GMGambia1974.gmISO 3166-2:GM
GNGuinea1974.gnISO 3166-2:GN
GPGuadeloupe1974.gpISO 3166-2:GP
GQEquatorial Guinea1974.gqISO 3166-2:GQ
GRGreece1974.grISO 3166-2:GR
GSSouth Georgia and the South Sandwich Islands1993.gsISO 3166-2:GS
GTGuatemala1974.gtISO 3166-2:GT
GUGuam1974.guISO 3166-2:GU
GWGuinea-Bissau1974.gwISO 3166-2:GW
GYGuyana1974.gyISO 3166-2:GY
HKHong Kong1974.hkISO 3166-2:HK
HMHeard Island and McDonald Islands1974.hmISO 3166-2:HM
HNHonduras1974.hnISO 3166-2:HN
HRCroatia1992.hrISO 3166-2:HR
HTHaiti1974.htISO 3166-2:HT
HUHungary1974.huISO 3166-2:HU
IDIndonesia1974.idISO 3166-2:ID
IEIreland1974.ieISO 3166-2:IE
ILIsrael1974.ilISO 3166-2:IL
IMIsle of Man2006.imISO 3166-2:IM
INIndia1974.inISO 3166-2:IN
IOBritish Indian Ocean Territory1974.ioISO 3166-2:IO
IQIraq1974.iqISO 3166-2:IQ
IRIran (Islamic Republic of)1974.irISO 3166-2:IR
ISIceland1974.isISO 3166-2:IS
ITItaly1974.itISO 3166-2:IT
JEJersey2006.jeISO 3166-2:JE
JMJamaica1974.jmISO 3166-2:JM
JOJordan1974.joISO 3166-2:JO
JPJapan1974.jpISO 3166-2:JP
KEKenya1974.keISO 3166-2:KE
KGKyrgyzstan1992.kgISO 3166-2:KG
KHCambodia1974.khISO 3166-2:KH
KIKiribati1979.kiISO 3166-2:KI
KMComoros1974.kmISO 3166-2:KM
KNSaint Kitts and Nevis1974.knISO 3166-2:KN
KPKorea (Democratic People's Republic of)1974.kpISO 3166-2:KP
KRKorea, Republic of1974.krISO 3166-2:KR
KWKuwait1974.kwISO 3166-2:KW
KYCayman Islands1974.kyISO 3166-2:KY
KZKazakhstan1992.kzISO 3166-2:KZ
LALao People's Democratic Republic1974.laISO 3166-2:LA
LBLebanon1974.lbISO 3166-2:LB
LCSaint Lucia1974.lcISO 3166-2:LC
LILiechtenstein1974.liISO 3166-2:LI
LKSri Lanka1974.lkISO 3166-2:LK
LRLiberia1974.lrISO 3166-2:LR
LSLesotho1974.lsISO 3166-2:LS
LTLithuania1992.ltISO 3166-2:LT
LULuxembourg1974.luISO 3166-2:LU
LVLatvia1992.lvISO 3166-2:LV
LYLibya1974.lyISO 3166-2:LY
MAMorocco1974.maISO 3166-2:MA
MCMonaco1974.mcISO 3166-2:MC
MDMoldova, Republic of1992.mdISO 3166-2:MD
MEMontenegro2006.meISO 3166-2:ME
MFSaint Martin (French part)2007.mfISO 3166-2:MF
MGMadagascar1974.mgISO 3166-2:MG
MHMarshall Islands1986.mhISO 3166-2:MH
MKNorth Macedonia1993.mkISO 3166-2:MK
MLMali1974.mlISO 3166-2:ML
MMMyanmar1989.mmISO 3166-2:MM
MNMongolia1974.mnISO 3166-2:MN
MOMacao1974.moISO 3166-2:MO
MPNorthern Mariana Islands1986.mpISO 3166-2:MP
MQMartinique1974.mqISO 3166-2:MQ
MRMauritania1974.mrISO 3166-2:MR
MSMontserrat1974.msISO 3166-2:MS
MTMalta1974.mtISO 3166-2:MT
MUMauritius1974.muISO 3166-2:MU
MVMaldives1974.mvISO 3166-2:MV
MWMalawi1974.mwISO 3166-2:MW
MXMexico1974.mxISO 3166-2:MX
MYMalaysia1974.myISO 3166-2:MY
MZMozambique1974.mzISO 3166-2:MZ
NANamibia1974.naISO 3166-2:NA
NCNew Caledonia1974.ncISO 3166-2:NC
NENiger1974.neISO 3166-2:NE
NFNorfolk Island1974.nfISO 3166-2:NF
NGNigeria1974.ngISO 3166-2:NG
NINicaragua1974.niISO 3166-2:NI
NLNetherlands1974.nlISO 3166-2:NL
NONorway1974.noISO 3166-2:NO
NPNepal1974.npISO 3166-2:NP
NRNauru1974.nrISO 3166-2:NR
NUNiue1974.nuISO 3166-2:NU
NZNew Zealand1974.nzISO 3166-2:NZ
OMOman1974.omISO 3166-2:OM
PAPanama1974.paISO 3166-2:PA
PEPeru1974.peISO 3166-2:PE
PFFrench Polynesia1974.pfISO 3166-2:PF
PGPapua New Guinea1974.pgISO 3166-2:PG
PHPhilippines1974.phISO 3166-2:PH
PKPakistan1974.pkISO 3166-2:PK
PLPoland1974.plISO 3166-2:PL
PMSaint Pierre and Miquelon1974.pmISO 3166-2:PM
PNPitcairn1974.pnISO 3166-2:PN
PRPuerto Rico1974.prISO 3166-2:PR
PSPalestine, State of1999.psISO 3166-2:PS
PTPortugal1974.ptISO 3166-2:PT
PWPalau1986.pwISO 3166-2:PW
PYParaguay1974.pyISO 3166-2:PY
QAQatar1974.qaISO 3166-2:QA
RERéunion1974.reISO 3166-2:RE
RORomania1974.roISO 3166-2:RO
RSSerbia2006.rsISO 3166-2:RS
RURussian Federation1992.ruISO 3166-2:RU
RWRwanda1974.rwISO 3166-2:RW
SASaudi Arabia1974.saISO 3166-2:SA
SBSolomon Islands1974.sbISO 3166-2:SB
SCSeychelles1974.scISO 3166-2:SC
SDSudan1974.sdISO 3166-2:SD
SESweden1974.seISO 3166-2:SE
SGSingapore1974.sgISO 3166-2:SG
SHSaint Helena, Ascension and Tristan da Cunha1974.shISO 3166-2:SH
SISlovenia1992.siISO 3166-2:SI
SJSvalbard and Jan Mayen1974.sjISO 3166-2:SJ
SKSlovakia1993.skISO 3166-2:SK
SLSierra Leone1974.slISO 3166-2:SL
SMSan Marino1974.smISO 3166-2:SM
SNSenegal1974.snISO 3166-2:SN
SOSomalia1974.soISO 3166-2:SO
SRSuriname1974.srISO 3166-2:SR
SSSouth Sudan2011.ssISO 3166-2:SS
STSao Tome and Principe1974.stISO 3166-2:ST
SVEl Salvador1974.svISO 3166-2:SV
SXSint Maarten (Dutch part)2010.sxISO 3166-2:SX
SYSyrian Arab Republic1974.syISO 3166-2:SY
SZEswatini1974.szISO 3166-2:SZ
TCTurks and Caicos Islands1974.tcISO 3166-2:TC
TDChad1974.tdISO 3166-2:TD
TFFrench Southern Territories1979.tfISO 3166-2:TF
TGTogo1974.tgISO 3166-2:TG
THThailand1974.thISO 3166-2:TH
TJTajikistan1992.tjISO 3166-2:TJ
TKTokelau1974.tkISO 3166-2:TK
TLTimor-Leste2002.tlISO 3166-2:TL
TMTurkmenistan1992.tmISO 3166-2:TM
TNTunisia1974.tnISO 3166-2:TN
TOTonga1974.toISO 3166-2:TO
TRTurkey1974.trISO 3166-2:TR
TTTrinidad and Tobago1974.ttISO 3166-2:TT
TVTuvalu1977.tvISO 3166-2:TV
TWTaiwan, Province of China1974.twISO 3166-2:TW
TZTanzania, United Republic of1974.tzISO 3166-2:TZ
UAUkraine1974.uaISO 3166-2:UA
UGUganda1974.ugISO 3166-2:UG
UMUnited States Minor Outlying Islands1986ISO 3166-2:UM
USUnited States of America1974.usISO 3166-2:US
UYUruguay1974.uyISO 3166-2:UY
UZUzbekistan1992.uzISO 3166-2:UZ
VAHoly See1974.vaISO 3166-2:VA
VCSaint Vincent and the Grenadines1974.vcISO 3166-2:VC
VEVenezuela (Bolivarian Republic of)1974.veISO 3166-2:VE
VGVirgin Islands (British)1974.vgISO 3166-2:VG
VIVirgin Islands (U.S.)1974.viISO 3166-2:VI
VNViet Nam1974.vnISO 3166-2:VN
VUVanuatu1980.vuISO 3166-2:VU
WFWallis and Futuna1974.wfISO 3166-2:WF
WSSamoa1974.wsISO 3166-2:WS
YEYemen1974.yeISO 3166-2:YE
YTMayotte1993.ytISO 3166-2:YT
ZASouth Africa1974.zaISO 3166-2:ZA
ZMZambia1974.zmISO 3166-2:ZM
ZWZimbabwe1980.zwISO 3166-2:ZW


.

希腊字母简表

.

序号大写小写英语音标注音英文汉语名称常用指代意义
1Αα/'ælfə/alpha阿尔法角度、系数、角加速度、第一个、电离度、转化率
2Ββ/'bi:tə/ 或 /'beɪtə/ beta贝塔 磁通系数、角度、系数
3Γγ/'gæmə/gamma伽玛 电导系数、角度、比热容比
4Δδ/'deltə/delta得尔塔 变化量、焓变、熵变、屈光度、一元二次方程中的判别式、化学位移
5Εε/'epsɪlɒn/epsilon艾普西隆对数之基数、介电常数、电容率、应变
6Ζζ/'zi:tə/zeta泽塔系数、方位角、阻抗、相对黏度
7Ηη/'i:tə/eta伊塔 迟滞系数、机械效率
8Θθ/'θi:tə/theta西塔温度、角度
9Ιι/aɪ'əʊtə/iota约(yāo)塔微小、一点
10Κκ/'kæpə/kappa卡帕介质常数、绝热指数
11λ/'læmdə/lambda拉姆达波长、体积、导热系数 普朗克常数
12Μμ/mju:/mu磁导率、微、动摩擦系(因)数、流体动力黏度、货币单位,莫比乌斯函数
13Νν/nju:/nu磁阻系数、流体运动粘度、光波频率、化学计量数
14Ξξ希腊 /ksi/ 英美 /ˈzaɪ/ 或 /ˈsaɪ/ xi克西 随机变量、(小)区间内的一个未知特定值
15Οο/əuˈmaikrən/ 或 /ˈɑmɪˌkrɑn/ omicron奥米克戎高阶无穷小函数
16π/paɪ/pi圆周率、π(n)表示不大于n的质数个数、连乘
17Ρρ/rəʊ/rho电阻率、柱坐标和极坐标中的极径、密度、曲率半径
18σ,ς/'sɪɡmə/sigma西格马总和、表面密度、跨导、应力、电导率
19Ττ/tɔ:/ 或 /taʊ/ tau时间常数、切应力、2π(两倍圆周率)
20Υυ/ˈipsɪlon/ 或 /ˈʌpsɪlɒn/ upsilon阿普西龙位移
21Φφ/faɪ/phi磁通量、电通量、角、透镜焦度、热流量、电势、直径、欧拉函数
22Χχ/kaɪ/chi统计学中有卡方(χ^2)分布
23Ψ ψ/ps/psi普西角速、介质电通量、ψ函数、磁链
24Ωω/'əʊmɪɡə/ 或 /oʊ'meɡə/ omega奥米伽/欧米伽 欧姆、角速度、角频率、交流电的电角度、化学中的质量分数、不饱和度

.

ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)

测试结果的汇总统计:

编号 对比方 系统环境 宿主环境 测试结果(QPS)
1 ASP.NET Core vs ASP.NET Core Windows Kestrel vs IIS 45.6k vs 15.2k
2 ASP.NET Core vs ASP.NET Windows IIS vs IIS 15.2k vs 18.2k
3 ASP.NET Core vs ASP.NET Windows Kestrel vs IIS 45.6k vs 18.2k
4 ASP.NET Core vs Python Django Linux Kestrel vs uwsgi 26.7k vs 1.57k
5 ASP.NET Core vs Java Servlet Linux Kestrel vs Tomcat 26.7k vs 18.3k
6-1 ASP.NET Core vs NodeJS Express Linux Kestrel vs self host 26.7k vs 15.6k
6-2 ASP.NET Core vs NodeJS Koa Linux Kestrel vs self host 26.7k vs 17.5k

作为微软的下一代 ASP.NET 框架,ASP.NET Core没有让我们失望,通过本次测试,我们大概对ASP.NET Core的性能心里有底了。一个圈子的良好发展需要社区的共同参与,也希望大家共同为.NET Core社区贡献自己的力量,同时也希望看到本篇文章的CTOs们以后在平台和框架选择的过程中考虑一下ASP.NET Core,因为她真的很优秀。

 

 

 

原文:https://www.cnblogs.com/savorboard/archive/2016/10/17/dotnet-benchmarks.html

 

 

 

 

 

 

Raft 更易理解的分布式一致性算法

一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前。

拜占庭将军问题

Leslie Lamport 在三十多年前发表的论文《拜占庭将军问题》(参考[1])。

拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军必需达成 一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序,在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员不可靠的情况下,其余忠诚的将军在不受叛徒或间谍的影响下如何达成一致的协议,拜占庭问题就此形成。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。

Lamport 一直研究这类问题,发表了一系列论文。但综合总结一下就是回答下面三个问题:

  1. 类似拜占庭将军这样的分布式一致性问题是否有解?
  2. 如果有解的话需要满足什么样的条件?
  3. 在特定前提条件的基础上,提出一种解法。

前两个问题 Lamport 在论文《拜占庭将军问题》已经回答,而第三个问题在后来的论文 《The Part-Time Parliament》中提出了一种算法并命名为 Paxos。这篇论文使用了大量的数学证明,而我基本就看不懂了(数学符号都认不全-。-;),考虑到大家理解起来都比较困难,后来 Lamport 又写了另外一篇论文 《Paxos Made Simple》完全放弃了所有数学符号的证明,使用纯英文的逻辑推导。我勉强逐字看了一遍,然后感觉若有所悟,但你问我搞懂了吗,我的标准应该还是没懂。对我来说理解一个算法有个明确的标准,就是真的懂了会在头脑里能将算法映射为代码,而看完后面一篇论文仅仅是若有所悟还达不到能映射为代码的清晰度。

虽然 Lamport 认为 Paxos 很 simple,但也许只是针对他的头脑而言。事实是大家理解起来都还是很困难,所以 Raft 就是建立在希望得到一个更易于理解的 Paxos 算法的替代品。把可理解性作为算法的主要目标之一,从论文题目就可看出来《In Search of an Understandable Consensus Algorithm》。

在进入正题前,我想起一个旧故事可以很直观的感受对一个问题不同的思维视角在可理解性上的差异。

不同视角的可理解性

依稀记得大约在二十年前,我还在读初中时在一本可能大概叫《数学中的发散思维》(不能很清晰记得书名了)的书中看到这么一个有趣的问题。

甲乙两人轮流在一张圆桌上平放黑白围棋子,每次放一子,棋子不许重叠,谁先没有地方放就输。
请问怎样放才能赢?

这个问题有两层意思,第一,有没有一种放法保证必赢?第二,如果有怎么证明?这里先停顿下,思考十秒钟。

上面的图回答了这个问题,就是先行者必胜,这里使用了三种不同的思维方式。

  1. 假如桌子只有一个围棋子那么大。
  2. 假如桌子无限大,先行者先占住圆心,由于圆是对称图形,所以只要对手还能找到位置放,你总能在对称的另一面找到位置放。
  3. 一个圆中可画单数个直径相等且互切的小圆。

三种不同的思维方式在可理解性难度上逐渐加深。第一种是极简化思维,但数学上是不严谨的。第二种是极限思维,和第一种结合起来就是数学归纳法了,在数学上是严谨的。第三种是形象思维,使用了几何学概念,但对于没有几何学基础知识的人就很难理解了。

Raft 协议的易理解性描述

虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然发散的比较多,相对冗长。读完后掩卷沉思觉得还是整理一下才会更牢靠,变成真正属于自己的。这里我就借助前面黑白棋落子里第一种极简思维来描述和概念验证下 Raft 协议的工作方式。

在一个由 Raft 协议组织的集群中有三类角色:

  1. Leader(领袖)
  2. Follower(群众)
  3. Candidate(候选人)

就像一个民主社会,领袖由民众投票选出。刚开始没有领袖,所有集群中的参与者都是群众,那么首先开启一轮大选,在大选期间所有群众都能参与竞选,这时所有群众的角色就变成了候选人,民主投票选出领袖后就开始了这届领袖的任期,然后选举结束,所有除领袖的候选人又变回群众角色服从领袖领导。这里提到一个概念「任期」,用术语 Term 表达。关于 Raft 协议的核心概念和术语就这么多而且和现实民主制度非常匹配,所以很容易理解。三类角色的变迁图如下,结合后面的选举过程来看很容易理解。

Leader 选举过程

在极简的思维下,一个最小的 Raft 民主集群需要三个参与者(如下图:A、B、C),这样才可能投出多数票。初始状态 ABC 都是 Follower,然后发起选举这时有三种可能情形发生。下图中前二种都能选出 Leader,第三种则表明本轮投票无效(Split Votes),每方都投给了自己,结果没有任何一方获得多数票。之后每个参与方随机休息一阵(Election Timeout)重新发起投票直到一方获得多数票。这里的关键就是随机 timeout,最先从 timeout 中恢复发起投票的一方向还在 timeout 中的另外两方请求投票,这时它们就只能投给对方了,很快达成一致。

选出 Leader 后,Leader 通过定期向所有 Follower 发送心跳信息维持其统治。若 Follower 一段时间未收到 Leader 的心跳则认为 Leader 可能已经挂了再次发起选主过程。

Leader 节点对一致性的影响

Raft 协议强依赖 Leader 节点的可用性来确保集群数据的一致性。数据的流向只能从 Leader 节点向 Follower 节点转移。当 Client 向集群 Leader 节点提交数据后,Leader 节点接收到的数据处于未提交状态(Uncommitted),接着 Leader 节点会并发向所有 Follower 节点复制数据并等待接收响应,确保至少集群中超过半数节点已接收到数据后再向 Client 确认数据已接收。一旦向 Client 发出数据接收 Ack 响应后,表明此时数据状态进入已提交(Committed),Leader 节点再向 Follower 节点发通知告知该数据状态已提交。

在这个过程中,主节点可能在任意阶段挂掉,看下 Raft 协议如何针对不同阶段保障数据一致性的。

1. 数据到达 Leader 节点前

这个阶段 Leader 挂掉不影响一致性,不多说。

2. 数据到达 Leader 节点,但未复制到 Follower 节点

这个阶段 Leader 挂掉,数据属于未提交状态,Client 不会收到 Ack 会认为超时失败可安全发起重试。Follower 节点上没有该数据,重新选主后 Client 重试重新提交可成功。原来的 Leader 节点恢复后作为 Follower 加入集群重新从当前任期的新 Leader 处同步数据,强制保持和 Leader 数据一致。

3. 数据到达 Leader 节点,成功复制到 Follower 所有节点,但还未向 Leader 响应接收

这个阶段 Leader 挂掉,虽然数据在 Follower 节点处于未提交状态(Uncommitted)但保持一致,重新选出 Leader 后可完成数据提交,此时 Client 由于不知到底提交成功没有,可重试提交。针对这种情况 Raft 要求 RPC 请求实现幂等性,也就是要实现内部去重机制。

4. 数据到达 Leader 节点,成功复制到 Follower 部分节点,但还未向 Leader 响应接收

这个阶段 Leader 挂掉,数据在 Follower 节点处于未提交状态(Uncommitted)且不一致,Raft 协议要求投票只能投给拥有最新数据的节点。所以拥有最新数据的节点会被选为 Leader 再强制同步数据到 Follower,数据不会丢失并最终一致。

5. 数据到达 Leader 节点,成功复制到 Follower 所有或多数节点,数据在 Leader 处于已提交状态,但在 Follower 处于未提交状态

这个阶段 Leader 挂掉,重新选出新 Leader 后的处理流程和阶段 3 一样。

6. 数据到达 Leader 节点,成功复制到 Follower 所有或多数节点,数据在所有节点都处于已提交状态,但还未响应 Client

这个阶段 Leader 挂掉,Cluster 内部数据其实已经是一致的,Client 重复重试基于幂等策略对一致性无影响。

7. 网络分区导致的脑裂情况,出现双 Leader

网络分区将原先的 Leader 节点和 Follower 节点分隔开,Follower 收不到 Leader 的心跳将发起选举产生新的 Leader。这时就产生了双 Leader,原先的 Leader 独自在一个区,向它提交数据不可能复制到多数节点所以永远提交不成功。向新的 Leader 提交数据可以提交成功,网络恢复后旧的 Leader 发现集群中有更新任期(Term)的新 Leader 则自动降级为 Follower 并从新 Leader 处同步数据达成集群数据一致。

综上穷举分析了最小集群(3 节点)面临的所有情况,可以看出 Raft 协议都能很好的应对一致性问题,并且很容易理解。

总结

就引用 Raft 论文最后的一节的综述来总结本文吧。

算法以正确性、高效性、简洁性作为主要设计目标。
虽然这些都是很有价值的目标,但这些目标都不会达成直到开发者写出一个可用的实现。
所以我们相信可理解性同样重要。

深以为然,想想 Paxos 算法是 Leslie Lamport 在 1990 年就公开发表在了自己的网站上,想想我们是什么时候才听说的?什么时候才有一个可用的实现?而 Raft 算法是 2013 年发表的,大家在参考[5]上面可以看到有多少个不同语言开源的实现库了,这就是可理解性的重要性。

参考

[1]. LESLIE LAMPORT, ROBERT SHOSTAK, MARSHALL PEASE. The Byzantine General Problem. 1982
[2]. Leslie Lamport. The Part-Time Parliament. 1998
[3]. Leslie Lamport. Paxos Made Simple. 2001
[4]. Diego Ongaro and John Ousterhout. Raft Paper. 2013
[5]. Raft Website. The Raft Consensus Algorithm
[6]. Raft Demo. Raft Animate Demo

 

文章来源:

https://www.cnblogs.com/mindwind/p/5231986.html

 

 

 

iptables SNAT DNAT

一、SNAT源地址转换

1、原理:在路由器后(PSOTROUTING)将内网的ip地址修改为外网网卡的ip地址。

2、应用场景:共享内部主机上网。

3、设置SNAT:网关主机进行设置。

(1)设置ip地址等基本信息。

(2)开启路由功能:

sed -i '/ip-forward/s/0/1/g'

sysctl -p

(3)编写规则:

iptables -t nat -I POSTROUTING -o 外网网卡 -s 内网网段 -j SNAT --to-source 外网ip地址  #适用于外网ip地址固定场景

iptables -t nat -I POSTROUTING -o 外网网卡 -s 内网网段 -j MASQUERADE  #适用于共享动态ip地址上网(如adsl拨号,dhcp获取外网ip)

(4)做好安全控制:使用FORWARD时机进行控制,严格设置INPUT规则。

 

二、DNAT目的地址转换:

1、原理:在路由前(PREROUTING)将来自外网访问网关公网ip及对应端口的目的ip及端口修改为内部服务器的ip及端口,实现发布内部服务器。

2、应用场景:发布内部主机服务。

3、设置DNAT:网关主机上设置。

(1)设置ip、开启路由、设置SNAT

(2)编写防火墙规则:

iptables -t nat -I PREROUTING -i 外网网卡 -d 外网ip tcp --dport 发布的端口 -j DNAT --to-destination 内网服务ip:端口

NAT network address translation

仅从报文请求来看,可以分为:

SNAT 源地址转换

DNAT 目标地址转换

PNAT 端口转换

NAT server:能根据需要实现SNAT DNAT PNAT

并非是用户空间的进程完成转换功能,靠的是内核中的地址转换规则

私有IP客户端访问互联网的方法

SNAT 、PROXY

SNAT:主要用于实现内网客户端访问外部主机时使用(局域网上网用)

定义在POSTROUTING链上

iptables -t nat -A postrouting -s 内部网络地址或主机地址 -j SNAT --to-source NAT服务器上的某外部地址

另外一个target

MASQUERADE地址伪装(适用于PPPOE拨号上网,假设eth1是出口)

iptables -t nat -A postrouting -s 内部网络或主机地址 -o eth1 -j MASQUERADE

DNAT:主要用于内部服务器被外网访问(发布服务)

定义在PREROUTING

iptables -t nat -A PREROUTING -d NAT服务器的某外部地址 -p 某协议 --dport 某端口 -j DNAT --to-destination 内网服务器地址[:port]

注意:NAT服务器需要打开数据转发

echo 1 > /proc/sys/net/ipv4/ip_forward

或者修改/etc/sysctl.conf net.ipv4.ip_forward = 1

实验操作

SNAT、DNAT

 

实验一:

SNAT

规划主机A 作为SNAT server

eth0 ip地址172.20.1.10(外部地址),eth1 192.168.1.1(内部地址)

主机B当做局域网内主机

eth0 ip地址192.168.1.2 默认路由要指向192.168.1.1

SNAT server:

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.20.1.10

#上面和我们实例操作相同

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

主机B ping外部的其它主机(172.20.1.20模拟互联网上的主机)

DNAT

[root@nat ~]# iptables -t filter -F

[root@nat ~]# iptables -t nat -F

[root@nat ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination

DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:80 to:192.168.2.4

[root@nat ~]# netstat -tln | grep "\<80\>"  此时本机上并没有开放80端口

[root@wai ~]# curl http://10.1.249.125

hello  --> 此时我们访问为 nat 主机上的80端口  由上面可知,此服务器上并没有开放80,而是将请求送往 后端服务器

 

实体案例

我们有一台机器A可以上外网,配置eth0=192.168.1.1,eth1=222.13.56.192

有6台机器只有内网IP ,分别是192.168.1.102~192.168.1.108,想让这6台机器通过机器A上网

在机器A 防火墙上配置如下即可

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.101 -j SNAT --to-source 222.13.56.192

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.102 -j SNAT --to-source 222.13.56.192

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.103 -j SNAT --to-source 222.13.56.192

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.104 -j SNAT --to-source 222.13.56.192

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.105 -j SNAT --to-source 222.13.56.192

/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.108 -j SNAT --to-source 222.13.56.192

在 6台机器上路由显示

route  -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 em1

169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 em1

0.0.0.0         192.168.1.1   0.0.0.0         UG    0      0        0 em1