2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
अयं लेखः तः आगतः अपाचे सीटा आधिकारिक दस्तावेजीकरण, अधिकगहनलेखान् द्रष्टुं आधिकारिकजालस्थलं गन्तुं स्वागतम्।
अयं लेखः तः आगतःअपाचे सीटा आधिकारिक दस्तावेजीकरण, अधिकगहनलेखान् द्रष्टुं आधिकारिकजालस्थलं गन्तुं स्वागतम्।
तदनुसारम्स्वामीपरिभाषितवर्गाः विन्यासाः च त्रयः प्रकाराः सन्ति : वातावरणविन्यासः, वर्णनविन्यासः, विस्तारितः विन्यासः च ।
पर्यावरणविन्यासः : मापदण्डाः यथा कदा केचन घटकाः आरभ्यन्ते, सामान्यतया विच्छिन्नसरलमूल्यानि, अधिकतया कुञ्जी-मूल्यदत्तांशः ।
विवरणविन्यासः : व्यावसायिकतर्केन सह सम्बद्धः, यथा लेनदेनप्रवर्तकाः प्रतिभागिनः च, सामान्यतया व्यावसायिकस्य जीवनचक्रप्रबन्धने निहिताः। तत्र बहु विन्याससूचना वर्णिता अस्ति, श्रेणीबद्धसम्बन्धः अपि अस्ति ।
विस्तारितं विन्यासः : उत्पादस्य तृतीयपक्षस्य कार्यान्वयनस्य आविष्कारस्य आवश्यकता वर्तते तथा च विन्याससङ्ग्रहस्य अपेक्षाकृतं उच्चानि आवश्यकतानि सन्ति, यथा विविधविन्यासकेन्द्राणि पञ्जीकरणकेन्द्राणि च सामान्यविधिः अन्तरफलकवर्गस्य पूर्णनामसञ्चिकां META-INF/सेवानां अन्तर्गतं स्थापयितुं भवति of the jar package, with the content as follows प्रतिपङ्क्तौ एकं कार्यान्वयनवर्गनाम ।
लोड् करणसमये seata सर्वरः विन्यासकेन्द्रस्य पञ्जीकरणकेन्द्रस्य च प्रकारं निर्धारयितुं resources/registry.conf इत्यस्य उपयोगं करिष्यति । संस्करण 1.0 इत्यस्य अनन्तरं seata क्लायन्ट् न केवलं विन्यासं लोड् कर्तुं conf सञ्चिकायाः उपयोगं कर्तुं शक्नोति, अपितु विन्यासकेन्द्रस्य चयनार्थं springboot इत्यस्य yml विन्याससञ्चिकायां seata.config.{type} इत्यस्य उपयोगं कर्तुं शक्नोति । yml मार्गेण विन्यासस्य लोड् कर्तुं स्रोतसङ्केतः io.seata.spring.boot.autoconfigure.properties.registry संकुलस्य अधः अस्ति ।
यदि seata client इत्यस्य उपयोक्ता conf विन्याससञ्चिकां संसाधनानाम् अधः स्थापयति तथा च yml सञ्चिकायां विन्यासः स्थापयति तर्हि yml सञ्चिकायां विन्यासः प्रथमं उपयुज्यते । संहिता : १.
CURRENT_FILE_INSTANCE = null == extConfiguration ? configuration : extConfiguration;
अत्र extConfiguration एकः बाह्यविन्यासदृष्टान्तः अस्ति, अर्थात् ExtConfigurationProvider#provide() बाह्यविन्यासप्रदातृवर्गेण प्रदत्तः, तथा च विन्यासः अन्येन विन्यासप्रदातृवर्गेण प्रदत्तः ConfigurationProvider#provide() एतौ द्वौ विन्यासप्रदातृवर्गौ इत्यस्य स्थिरखण्डे सन्ति the config module ConfigurationFactory , SPI मार्गेण लोड् कृतम् ।
EnhancedServiceLoader.load(ExtConfigurationProvider.class).provide(configuration);
उपरि यत् उक्तं तत् विन्यासकेन्द्रप्रकारस्य चयनं भवति, विन्यासवातावरणस्य भारः च कस्य विन्यासकेन्द्रप्रकारस्य उपयोगः कर्तव्यः इति निर्धारयित्वा तत्सम्बद्धविन्यासकेन्द्रद्वारा वातावरणविन्यासस्य लोडीकरणं भवति पाठविधाने सञ्चिकाविन्यासः अपि विन्यासकेन्द्रम् अस्ति ।
क्लायन्ट् तथा सर्वरः विन्यासवर्गदृष्टान्तं प्राप्तुं ConfigurationFactory#getInstance() इत्यस्य माध्यमेन विन्यासमापदण्डान् प्राप्नोति, ततः विन्यासवर्गदृष्टान्तं प्राप्तुं विन्यासकुंजीनित्यानां परिभाषा मुख्यतया कोरमॉड्यूलस्य अधः विन्याससञ्चिकायां भवति
केषाञ्चन महत्त्वपूर्णानां पर्यावरणविन्यासगुणानां अर्थः,आधिकारिकजालस्थले परिचयः अस्ति。
उदाहरणीकरणस्य समये ConfigurationFactory मार्गेण प्राप्ताः ततः कन्स्ट्रक्टर् मध्ये इन्जेक्शन् कृताः तेषां प्रभावार्थं पुनः आरम्भस्य आवश्यकता वर्तते तथापि उपयोगकाले ConfigurationFactory मार्गेण प्राप्ताः एकवारं विन्यासः परिवर्तितः चेत् प्रभावी भविष्यति
तथापि, विन्यासमॉड्यूल् दृष्टान्तस्य अन्तः गुणं परिवर्तयितुं ConfigurationChangeListener#onChangeEvent अन्तरफलकविधिं प्रदाति । अर्थात् अस्मिन् पद्धत्या गतिशीलरूपेण परिवर्तमानाः विशेषताः निरीक्षिताः भवन्ति यदि प्रथमवारं इन्जेक्शन् आरब्धस्य विशेषताभ्यः भिन्नाः इति ज्ञायते तर्हि दृष्टान्ते रक्षिताः विशेषताः विन्यासकेन्द्रेण सह सङ्गताः भवेयुः एवं गतिशीलविन्यासः प्राप्तः ।
public class GlobalTransactionalInterceptor implements ConfigurationChangeListener {
private volatile boolean disable = ConfigurationFactory.getInstance().getBoolean(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION,false);
@Override public Object invoke(Param param) {
if(disable){//事务业务处理}
}
@Override public void onChangeEvent(Param param) {
disable = param;
}}
उपरिष्टात् वसन्तमॉड्यूल् इत्यस्य अन्तर्गतं GlobalTransactionalInterceptor इत्यस्य अवनयनविशेषतायाः सह सम्बद्धः छद्मसङ्केतः अस्ति । यदा उपरिष्टाद् अवरोधकवर्गः दृष्टान्तरूपेण भवति तदा GlobalTrarnsactionalScanner विन्यासपरिवर्तनश्रवणसूचौ अवरोधकं पञ्जीकरणं करोति यदा विन्यासः परिवर्तितः भवति तदा श्रोता आह्वयते:
ConfigurationFactory.getInstance().addConfigListener(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION,(ConfigurationChangeListener)interceptor);
अवनयनस्य अर्थः अस्ति यत् यदा सेवायाः कश्चन कार्यं अनुपलब्धं भवति तदा गतिशीलरूपेण विन्यस्तविशेषणानां माध्यमेन निश्चितं कार्यं निष्क्रियं भवति, येन विफलतां नियन्त्रयितुं पुनः पुनः प्रयासः न भवति interceptor#invoke() केवलं यदा एतत् अक्षमविशेषणं सत्यं भवति तदा एव seata लेनदेनसम्बद्धाः सेवाः निष्पादिताः भविष्यन्ति ।
सामान्यरूपरेखावर्णनात्मकविन्यासे प्रायः बहु सूचना भवति अपि च श्रेणीबद्धसम्बन्धाः सन्ति xml विन्यासस्य उपयोगः अधिकसुलभः भवति यतोहि वृक्षसंरचना अधिका वर्णनात्मका भवति । परन्तु वर्तमान-अभ्यासाः बोझिल-प्रतिबन्धक-विन्यासानां निराकरणस्य, सहमत-पद्धतीनां स्वीकरणस्य च वकालतम् कुर्वन्ति ।
Seata AT मोड् आँकडास्रोतानां प्रॉक्सी कृत्वा लेनदेनप्रक्रियाकरणं करोति, यत् व्यावसायिकपक्षेभ्यः न्यूनं आक्रमणं करोति, Seata इत्यस्य केवलं एतत् चिन्तयितुं आवश्यकं यत् प्रारम्भे कस्य व्यावसायिकपक्षेभ्यः वैश्विकव्यवहारं सक्षमं कर्तुं आवश्यकं भवति, अतः एनोटेशनस्य उपयोगेन वर्णनात्मकविन्यासः प्राप्तुं शक्यते
@GlobalTransactional(timeoutMills = 300000, name = "busi-doBiz")
public String doBiz(String msg) {}
यदि tcc मोड् अस्ति तर्हि व्यवहारप्रतिभागिनां एनोटेशन-परिचयकानां उपयोगः अपि आवश्यकः अस्ति:
@TwoPhaseBusinessAction(name = "tccActionForSpringTest" , commitMethod = "commit", rollbackMethod = "rollback")
public boolean prepare(BusinessActionContext actionContext, int i);
public boolean commit(BusinessActionContext actionContext);
public boolean rollback(BusinessActionContext actionContext);
विस्तारितविन्यासस्य सामान्यतया उत्पादसङ्ग्रहस्य अधिकानि आवश्यकतानि सन्ति, यतः उत्पादस्य तृतीयपक्षस्य कार्यान्वयनस्य आविष्कारः करणीयः भवति तथा च उत्पादे योजयितुं आवश्यकता भवति
इदं कस्टम् विन्यासकेन्द्रेण प्रदत्तस्य वर्गस्य उदाहरणम् अस्ति META-INF/services इत्यस्य अधः अन्तरफलकस्य समाननाम्ना सञ्चिकायाः सामग्रीः अन्तरफलकस्य कार्यान्वयनवर्गः अस्ति । एषः मानकः स्पी मार्गः अस्ति । ततः config.type=test इति विन्याससञ्चिकायां registry.conf इत्यत्र परिवर्तनं कुर्वन्तु ।
परन्तु यदि भवान् मन्यते यत् एतत् seata द्वारा ज्ञात्वा विन्यासकेन्द्रं प्रतिस्थापयितुं शक्यते तर्हि भवान् भ्रष्टः अस्ति । यदा seata विन्यासकेन्द्रं लोडयति तदा विन्याससञ्चिकायां विन्यस्तस्य विन्यासकेन्द्रप्रकारस्य मूल्यं लपेटयितुं enum ConfigType इत्यस्य उपयोगं करोति:
private static Configuration buildConfiguration() {
configTypeName = "test";//registry.conf中配置的config.type
configType = ConfigType.getType(configTypeName);//ConfigType获取不到会抛异常
}
यदि विन्यासकेन्द्रप्रकारस्य परीक्षणं ConfigType मध्ये परिभाषितं नास्ति तर्हि अपवादः क्षिप्तः भविष्यति । अतः, केवलं स्रोतसङ्केतं परिवर्तनं विना विन्याससञ्चिकां परिवर्तयितुं ConfigType मध्ये परिभाषितानां विन्यासकेन्द्रेण प्रदत्तवर्गाणां अतिरिक्तं विन्यासकेन्द्रं प्रदत्तवर्गाणां उपयोगं कर्तुं न शक्यते
संस्करणे 1.0 मध्ये ConfigType इत्यस्मिन् परिभाषिताः वर्तमानविन्यासकेन्द्रप्रकाराः सन्ति: File, ZK, Nacos, Apollo, Consul, Etcd3, SpringCloudConfig, Custom । यदि उपयोक्ता अनुकूलितं विन्यासकेन्द्रप्रकारस्य उपयोगं कर्तुम् इच्छति तर्हि सः Custom प्रकारस्य उपयोगं कर्तुं शक्नोति ।
भवान् अत्र एकं अशोभनीयं मार्गं उपयोक्तुं शक्नोति, अर्थात् निर्दिष्टनाम्ना ZK परन्तु उच्चस्तरीयक्रम=3 (ZK पूर्वनिर्धारितक्रम=1) इत्यनेन सह कार्यान्वयनवर्गं प्रदातुं शक्नोति, येन ConfigurationFactory TestConfigurationProvider इत्यस्य उपयोगं विन्यासकेन्द्रप्रदातृवर्गरूपेण कर्तुं शक्नोति
उपर्युक्तपदार्थानाम् माध्यमेन भवान् seata इत्यस्मै प्रदत्तस्य कोडस्य उपयोगं कर्तुं शक्नोति । कोडेक, कंप्रेसर, डिस्कवरी, सीटा इत्यस्मिन् एकीकरणम् इत्यादयः मॉड्यूलाः सर्वे कार्यात्मकवर्गान् लोड् कर्तुं spi तन्त्रस्य उपयोगं कुर्वन्ति, यत् माइक्रोकर्नेल् प्लग-इन् इत्यस्य डिजाइनदर्शनस्य तृतीयपक्षस्य समानव्यवहारस्य च अनुरूपं भवति
लेखकः झाओ रुन्जे, 1999।श्रृङ्खला पता。