[dubbo] Dubbo API 筆記——配置參考


schema 配置參考

所有配置項分為三大類

  • 服務發現:表示該配置項用於服務的注冊與發現,目的是讓消費方找到提供方
  • 服務治理:表示該配置項用於治理服務間的關系,或為開發測試提供便利條件
  • 性能調優:表示該配置項用於調優性能,不同的選項對性能會產生影響

所有配置最終都將轉換為 URL 表示,並由服務提供方生成,經注冊中心傳遞給消費方

    URL 格式: protocol://username:password@host:port/path?key=value&key=value
  • 1

只有 group,interface,version 是服務的匹配條件,三者決定是不是同一個服務,其它配置項均為調優和治理參數

dubbo:service

服務提供者暴露服務配置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
interface   class 必填   服務發現 服務接口名
ref   object 必填   服務發現 服務對象實現引用
version version string 可選 0.0.0 服務發現 服務版本,建議使用兩位數字版本,如:1.0,通常在接口不兼容時版本號才需要升級
group group string 可選   服務發現 服務分組,當一個接口有多個實現,可以用分組區分
path <path> string 可選 缺省為接口名 服務發現 服務路徑(注意:1.0不支持自定義路徑,總是使用接口名,如果有1.0調 2.0,配置服務路徑可能不兼容
delay delay int 可選 0 性能調優 延遲注冊服務時間(毫秒),設為-1時,表示延遲到Spring容器初始化完 成時暴露服務
timeout timeout int 可選 1000 性能調優 遠程服務調用超時時間(毫秒)
retries retries int 可選 2 性能調優 遠程服務調用重試次數,不包括第一 次調用,不需要重試請設為0
connections connections int 可選 100 性能調優 對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數
loadbalance loadbalance string 可選 random 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用
async async boolean 可選 false 性能調優 是否缺省異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程
stub stub class/boolean 可選 false 服務治理 設為true,表示使用缺省代理類名,即:接口名 + Local后綴,服務接口客戶端本地代理類名,用於在客戶端執 行本地邏輯,如本地緩存等,該本地代理類的構造函數必須允許傳入遠程代理對象,構造函數如:public XxxServiceLocal(XxxService xxxService)
mock mock class/boolean 可選 false 服務治理 設為true,表示使用缺省Mock類名,即:接口名 + Mock后綴,服務接口調用失敗Mock實現類,該Mock類必須有 一個無參構造函數,與Local的區別在於,Local總是被執行,而Mock只在出現非業務異常(比如超時,網絡異常等) 時執行,Local在遠程調用之前執行, Mock在遠程調用后執行
token token string/boolean 可選 false 服務治理 令牌驗證,為空表示不開啟,如果為true,表示隨機生成動態令牌,否則使用靜態令牌,令牌的作用是防止消費者繞過注冊中心直接訪問,保證注冊中心的授權功能有效,如果使用點對 調用,需關閉令牌功能
registry   string 可選 缺省向所有registry注冊 配置關聯 向指定注冊中心注冊,在多個注冊中心時使用,值為<dubbo:registry>的id屬性,多個注冊中心ID用逗號分隔,如果不想將該服務注冊到任何registry,可將值設為N/A
provider   string 可選 缺使用第一個provider配置 配置關聯 指定provider,值為<dubbo:provider>的id屬性
deprecated deprecated boolean 可選 false 服務治理 服務是否過時,如果設為true,消費方引用時將打印服務過時警告error日志
dynamic dynamic boolean 可選 true 服務治理 服務是否動態注冊,如果設為false,注冊后將顯示后disable狀態,需人工啟用,並且服務提供者停止時,也不啟用,並且服務提供者停止時,也不會自動取消冊,需人工禁用
accesslog accesslog string/boolean 可選 false 服務治理 設為true,將向logger中輸出訪問日志,也可填寫訪問日志文件路徑,直接把訪問日志輸出到指定文件
owner owner string 可選   服務治理 服務負責人,用於服務治理,請填寫負責人公司郵箱前綴
document document string 可選   服務治理 服務文檔URL
weight weight int 可選   性能調優 服務權重
executes executes int 可選 0 性能調優 服務提供者每服務每方法最大可並行執行請求數
proxy proxy string 可選 javassist 性能調優 生成動態代理方式,可選:jdk/javassist
cluster cluster string 可選 failover 性能調優 集群方式,可選:failover/failfast/failsafe/failback/forking
listener exporter.listener string 可選 default 性能調優 服務提供方導出服務監聽器名稱,多個名稱用逗號分隔
protocol   string 可選   配置關聯 使用指定的協議暴露服務,在多協議時使用,值為<dubbo:protocol>的id屬性,多個協議ID用逗號分隔
layer layer string 可選   服務治理 服務提供者所在的分層。如:biz、 dao、intl:web、china:acton
register register boolean 可選 true 服務治理 該協議的服務是否注冊到注冊中心

dubbo:reference

服務消費者引用服務配置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
id   string 必填   配置關聯 服務引用BeanId
interface   class 必填   服務發現 服務接口名
version version string 可選   服務發現 服務版本,與服務提供者的版本一致
group group string 可選   服務發現 服務分組,當一個接口有多個實現,可以用分組區分,必需和服務提供方一致
timeout timeout long 可選 缺省使用<dubbo:consumer>的timeout 性能調優 服務方法調用超時時間(毫秒)
retries retries int 可選 缺省使用<dubbo:consumer>的retries 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設為0
connections connections int 可選 缺省使用<dubbo:consumer>的connections 性能調優 對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數
loadbalance loadbalance string 可選 缺省使用<dubbo:consumer>的loadbalance 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用
async async boolean 可選 缺省使用<dubbo:consumer> 性能調優 是否異步執行,不可靠異步,只是忽 略返回值,不阻塞執行線程
generic generic boolean 可選 缺省使用<dubbo:consumer>的generic 服務治理 是否缺省泛化接口,如果為泛化接口,將返回GenericService
check check boolean 可選 缺省使用<dubbo:consumer>的check 服務治理 啟動時檢查提供者是否存在,true報錯,false忽略
url url string 可選   服務治理 點對點直連服務提供者地址,將繞過注冊中心
stub stub class/boolean 可選   服務治理 服務接口客戶端本地代理類名,用於在客戶端執行本地邏輯,如本地緩存等,該本地代理類的構造函數必須允許傳入遠程代理對象,構造函數如: public XxxServiceLocal(XxxService xxxService)
mock mock class/boolean 可選   服務治理 服務接口調用失敗Mock實現類名,該Mock類必須有一個無參構造函數,與 Local的區別在於,Local總是被執行,而Mock只在出現非業務異常(比如超時,網絡異常等)時執行,Local在遠程調用之前執行,Mock在遠程調用后執行
cache cache string/boolean 可選   服務治理 以調用參數為key,緩存返回結果,可選:lru,threadlocal,jcache等
validation validation boolean 可選   服務治理 是否啟用JSR303標准注解驗證,如果啟用,將對方法參數上的注解進行校驗
proxy proxy boolean 可選 javassist 性能調優 客戶端傳輸類型設置,如Dubbo協議的netty或mina
client client string 可選   性能調優 客戶端傳輸類型設置,如Dubbo協議的netty或mina
registry   string 可選 缺省將從所有注冊中心獲取服務列表后合並結果 配置關聯 從指定注冊中心注冊獲取服務列表,在多個注冊中心時使用,值為<dubbo:registry>的id屬性,多個注冊中心ID用逗號分隔
owner owner string 可選   服務治理 調用服務負責人,用於服務治理,請填寫負責人公司郵箱前綴
actives actives int 可選 0 性能調優 每服務消費者每服務每方法最大並發調用數
cluster cluster string 可選 failover 性能調優 集群方式,可選:failover/failfast/failsafe/failback/forking
filter reference.filter string 可選 default 性能調優 服務消費方遠程調用過程攔截器名稱,多個名稱用逗號分隔
listener invoker.listener string 可選 default 性能調優 服務消費方引用服務監聽器名稱,多個名稱用逗號分隔
layer layer string 可選 false 服務治理 服務調用者所在的分層。如:biz、dao、intl:web、china:acton
init init boolean 可選 false 性能調優 是否在afterPropertiesSet()時飢餓初始化引用,否則等到有人注入或引用該 實例時再初始化
protocol protocol string 可選   服力治理 只調用指定協議的服務提供方,其它協議

dubbo:protocol

服務提供者協議配置,如果需要支持多協議,可以聲明多個 <dubbo:protocol> 標簽,並在 <dubbo:service> 中通過 protocol 屬性指定使用的協議

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
id   string 可選 dubbo 配置關聯 協議BeanId,可以在<dubbo:service protocol=”“>中引用此ID,如果ID不填,缺省和name屬性值一樣,重復則 在name后加序號
name <protocol> string 必填 dubbo 性能調優 協議名稱
port <port> int 可選 dubbo協議缺省端口為20880, rmi協議缺省端 口為1099,http 和hessian協議 缺省端口為80; 如果配置為-1 或者沒有配置port,則會分配一個沒有被占用的端口。Dubbo 2.4.0+,分配的 端口在協議缺省端口的基礎上增長,確保端口段可控 服務發現 服務端口
host <host> string 可選 自動查找本機IP 服務發現 -服務主機名,多網卡選擇或指定VIP及域名時使用,為空則自動查找本機IP,-建議不要配置,讓Dubbo自動獲取本機IP
threadpool threadpool string 可選 fixed 性能調優 線程池類型,可選:fixed/cached
threads threads int 可選 100 性能調優 服務線程池大小(固定大小)
iothreads threads int 可選 cpu個數+1 性能調優 io線程池大小(固定大小)
accepts accepts int 可選 0 性能調優 服務提供方最大可接受連接數
payload payload int 可選 88388608(=8M) 性能調優 請求及響應數據包大小限制,單位:字節
codec codec string 可選 dubbo 性能調優 協議編碼方式
serialization serialization string 可選 dubbo協議缺省為hessian2,rmi協議缺省為java,http協議 缺省為json 性能調優 協議序列化方式,當協議支持多種序列化方式時使用,比如:dubbo協議的dubbo,hessian2,java,compactedjava,以及http協議的json等
accesslog accesslog string/boolean 可選   服務治理 設為true,將向logger中輸出訪問日志,也可填寫訪問日志文件路徑,直接把訪問日志輸出到指定文件
path <path> string 可選   服務發現 提供者上下文路徑,為服務path的前綴
transporter transporter string 可選 dubbo協議缺省為netty 性能調優 協議的服務端和客戶端實現類型,比如:dubbo協議的mina,netty等,可以分拆為server和client配置
server server string 可選 dubbo協議缺省為netty,http協議缺省為servlet 性能調優 協議的服務器端實現類型,比如:dubbo協議的mina,netty等,http協議的jetty,servlet等
client client string 可選 dubbo 協議缺省 為netty 性能調優
dispatcher dispatcher string 可選 dubbo協議缺省為all 性能 協議的消息派發方式,用於指定線程模型,比如:dubbo協議的all,direct,message,execution,connection等
queues queues int 可選 0 性能調優 線程池隊列大小,當線程池滿時,排隊等待執行的隊列大小,建議不要設置, 當線程程池時應立即失敗,重試其它服 務提供機器,而不是排隊,除非有特殊 需求
charset charset string 可選 UTF-8 性能調優 序列化編碼
buffer buffer int 可選 8192 性能調優 網絡讀寫緩沖區大小
heartbeat heartbeat int 可選 0 性能調優 心跳間隔,對於長連接,當物理層斷開時,比如拔網線,TCP的FIN消息來不及發送,對方收不到斷開事件,此時需 要心跳來幫助檢查連接是否已斷開
telnet telnet string 可選   服務治理 所支持的telnet命令,多個命令用逗號分隔
register register boolean true服務治理 該協議的服務是否注冊到注冊中心
contextpath contextpath string 可選 缺省為空串 服務治理  

dubbo:registry

注冊中心配置,如果有多個不同的注冊中心,可以聲明多個 <dubbo:registry> 標簽,並在 <dubbo:service> 或 <dubbo:reference> 的 registry 屬性指定使用的注冊中心

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
id   string 可選   配置關聯 注冊中心引用BeanId,可以在 <dubbo:service registry=”“>或 <dubbo:reference registry=”“>中引用此ID
address <host:port> string 必填   服務發現 注冊中心服務器地址,如果地址沒有端口缺省為9090,同一集群內的多個地址用逗號分隔,如:ip:port,ip:port,不同集群的注冊中心,請配置多個 <dubbo:registry> 標簽
protocol <protocol> string 可選 dubbo 服務發現 注同中心地址協議,支持dubbo, http, local三種協 議,分別表示, dubbo地址,http 地址,本地注冊 中心
port <port> int 可選 9090 服務發現 注冊中心缺省端口,當address沒有帶端口時使用此端口做為缺省 值
username <username> string 可選   服務治理 登錄注冊中心用戶名,如果注冊中心不需要驗證可不填
password <password> string 可選   服務治理 登錄注冊中心密碼,如果注冊中心不需要驗證可不填
transport registry.transporter string 可選 netty 性能調優 網絡傳輸方式,可選mina,netty
timeout registry.timeout int 可選 5000 性能調優 注冊中心請求超時時間(毫秒)
session registry.session int 可選 60000 性能調優 注冊中心會話超時時間(毫秒),用於檢測提供者非 正常斷線后的臟數據,比如用心跳檢測的實現,此時間就是心跳間隔,不同注冊中心實現不一樣
file registry.file string 可選   服務治理 使用文件緩存注 冊中心地址列表及服務提供者列表,應用重啟時將基於此文件恢復,注意:兩個注冊中心不能使用同一文件存儲
wait registry.wait int 可選 0 性能調優 停止時等待通知完成時間(毫秒)
check check boolean 可選 true服務治理 注冊中心不存在時,是否報錯  
register register boolean 可選 true 服務治理 是否向此注冊中心注冊服務,如果設為false,將只訂閱,不注冊
subscribe subscribe boolean 可選 true 服務治理 是否向此注冊中心訂閱服務,如果設為false,將只注冊,不訂閱
dynamic dynamic boolean 可選 true 服務治理 服務是否動態注冊,如果設為 false,注冊后將顯示后disable狀態,需人工啟用,並且服務提供者停止時,也不會自動取消冊,需人工禁用

dubbo:monitor

監控中心配置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
protocol protocol string 可選 dubbo 服務治理 監控中心協議,如果為protocol=”registry”,表示從注冊中心發現監控中心地址,否則直連監控中心
address <url> string 可選 N/A 服務治理 直連監控中心服務器地址,address=”10.20.130.230:12080”

dubbo:application

應用信息配置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
name application string 必填   服務治理 當前應用名稱,用於注冊中心計算應用間依賴關系,注意:消費者和提供者應用名不要一樣,此參數不是匹配條件,你當前項目叫什么名字就填什么,和提供者消費者角色無關,比如:kylin應用調用了morgan應用的服務,則kylin項目配成kylin,morgan項目配成morgan,可能kylin也提供其它服務給別人使用,但kylin項目永遠配成kylin,這樣注冊中心將顯示kylin依賴於morgan
version application.version string 可選   服務治理 當前應用的版本
owner owner string 可選   服務治理 應用負責人,用於服務治理,請填寫負責人公司郵箱前綴
organization organization string 可選   服務治理 組織名稱(BU或部門),用於注冊中心區分服務來源,此配置項建議不要使用autoconfig,直接寫死在配 置中,比如 china,intl,itu,crm,asc,dw,aliexpress 等
architecture architecture string 可選   服務治理 用於服務分層對應的架構。如,intl、china。不同的架構使用不同的分層
environment environment string 可選   服務治理 應用環境,如: develop/test/product,不同環境使 用不同的缺省值,以及作為只用於開發測試功能的限制條件
compiler compiler string 可選 javassist 性能優化 Java字節碼編譯器,用於動態類的生成,可選:jdk或javassist
logger logger string 可選 slf4j 性能優化 日志輸出方式,可選: slf4j,jcl,log4j,jdk

dubbo:module

模塊信息配置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
name module string 必填   服務治理 當前模塊名稱,用於注冊中心計算模塊間依賴關系
version module.version string 可選   服務治理 當前模塊的版本
owner owner string 可選   服務治理 模塊負責人,用於服務治理,請填 寫負責人公司郵箱前綴
organization organization string 可選   服務治理 組織名稱(BU或部門),用於注冊中心區分服務來源,此配置項建議不要使用autoconfig,直接寫死在配 置中,比如 china,intl,itu,crm,asc,dw,aliexpress 等

dubbo:provider

服務提供者缺省值配置,同時該標簽為 <dubbo:service> 和 <dubbo:protocol> 標簽的缺省值設置

         
屬性 對應URL參數 類型 是否必填 缺省值
id   string 可選 dubbo
protocol <protocol> string 可選 dubbo
host <host> string 可選 自動查找本機IP
threads threads int 可選 100
payload payload int 可選 88388608(=8M)
path <path> string 可選  
server server string 可選 dubbo協議缺省 為netty,http協議缺省為servlet
client client string 可選 dubbo協議缺省 為netty
codec codec string 可選 dubbo
serialization serialization string 可選 dubbo協議缺省為hessian2, rmi協議缺省為java,http協議缺省為json
default   boolean 可選 false
filter service.filter string 可選  
listener exporter.listener string 可選  
threadpool threadpool string 可選 fixed
accepts accepts int 可選 0
version version string 可選 0.0.0
group group string 可選  
delay delay int 可選 0
timeout default.timeout int 可選 1000
retries default.retries int 可選 2
connections default.connections int 可選 0
loadbalance default.loadbalance string 可選 random
async default.async boolean 可選 false
stub stub boolean 可選 false
mock mock boolean 可選 false
token token boolean 可選 false
registry registry string 可選 缺省向所有registry注冊
dynamic dynamic boolean 可選 true
accesslog accesslog string/boolean 可選 false
owner owner string 可選  
document document string 可選  
weight weight int 可選  
executes executes int 可選 0
actives default.actives int 可選 0
proxy proxy string 可選 javassist
cluster default.cluster string 可選 failover
deprecated deprecated boolean 可選 false
queues queues int 可選 0
charset charset string 可選 UTF-8
buffer buffer int 可選 8192
iothreads iothreads int 可選 CPU+1
telnet telnet string 可選  
<dubbo:service> contextpath contextpath String 可選
layer layer string 可選  

dubbo:consumer

服務消費者缺省值配置,同時該標簽為 <dubbo:reference> 標簽的缺省值設置

             
屬性 對應URL參數 類型 是否必填 缺省值 作用  
timeout default.timeout int 可選 1000 性能調優 遠程服務調用超時時間(毫秒)
retries default.retries int 可選 2 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設為0
loadbalance default.loadbalance string 可選 random 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用
async default.async boolean 可選 false 性能調優 是否缺省異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程
connections default.connections int 可選 100 性能調優 每個服務對每個提供者的最大連接數,rmi、http、hessian等短連接協議支持此配置,dubbo協議長連接不支持此配置
generic generic boolean 可選 false 服務治理 是否缺省泛化接口,如果為泛化接口,將返回GenericService
check check boolean 可選 true 服務治理 啟動時檢查提供者是否存在,true報錯,false忽略
proxy proxy string 可選 javassist 性能調優 生成動態代理方式,可選: jdk/javassist
owner owner string 可選   服務治理 調用服務負責人,用於服務治理,請填寫負責人公司郵箱前綴
actives default.actives int 可選 0 性能調優 每服務消費者每服務每方法最大並發調用數
cluster default.cluster string 可選 failover 性能調優 集群方式,可選:failover/failfast/failsafe/failback/forking
filter reference.filter string 可選   性能調優 服務消費方遠程調用過程攔截器名稱,多個名稱用逗號分隔
listener invoker.listener string 可選   性能調優 服務消費方引用服務監聽器名稱,多個名稱用逗號分隔
registry   string 可選 缺省向所有 registry 注冊 配置關聯 向指定注冊中心注冊,在多個注冊中心時使用,值為<dubbo:registry>的id屬性,多個注冊中心ID用逗號分隔,如果不想將該服務注冊到任何registry,可將值設為N/A
layer layer string 可選   服務治理 服務調用者所在的分層。如:biz、dao、intl:web、china:acton
init init boolean 可選 false 性能調優 是否在afterPropertiesSet()時飢餓初始化引用,否則等到有人注入或引用該實例時再初始化
cache cache string/boolean 可選   服務治理 以調用參數為key,緩存返回結果,可選:lru, threadlocal, jcache等
validation validation boolean 可選   服務治理 是否啟用JSR303標准注解驗證,如果啟用,將對方法參數上的注解進行校驗

dubbo:method

方法級配置,同時該標簽為 <dubbo:service> 或 <dubbo:reference> 的子標簽,用於控制到方法級

<dubbo:reference interface="com.xxx.XxxService">                
    <dubbo:method name="findXxx" timeout="3000" retries="2" />
</dubbo:reference>
  • 1
  • 2
  • 3
         
屬性 對應URL參數 類型 是否必填 缺省值
name   string 必填  
timeout <metodName>.timeout int 可選 缺省為的timeout
retries <metodName>.retries int 可選 缺省為 <dubbo:reference> 的retries
loadbalance <metodName>.loadbalance string 可選 缺省為的 loadbalance
async <metodName>.async boolean 可選 缺省為 <dubbo:reference> 的async
sent <methodName>.sent boolean 可選 true
actives <metodName>.actives int 可選 0
executes <metodName>.executes int 可選 0
deprecated <methodName>.deprecated boolean 可選 false
sticky <methodName>.sticky boolean 可選 false
return <methodName>.return boolean 可選 true
oninvoke attribute屬性,不在URL中體現 String 可選  
onreturn attribute屬性,不在URL中體現 String 可選  
onthrow attribute屬性,不在URL中體現 String 可選  
cache <methodName>.cache string/boolean 可選  
validation <methodName>.validation boolean 可選  

dubbo:argument

方法參數配置,該標簽為 <dubbo:method> 的子標簽,用於方法參數的特征描述

<dubbo:method name="findXxx" timeout="3000" retries="2">
    <dubbo:argument index="0" callback="true" /> 
</dubbo:method>
  • 1
  • 2
  • 3
               
屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
index   int 必填   標識 方法名 2.0.6 以上版本
type   String 與 index 二選一   標識 通過參數類型查找參數的 index 2.0.6 以上版本
callback <metodName><index>.retries boolean 可選   服務治理 參數是否為callback接口,如果為callback,服務提供方將生成反向代理,可以從服務提供方反向調用消費方,通常用於事件推送 2.0.6以上版本

dubbo:parameter

選項參數配置,該標簽為 <dubbo:protocol> 或 <dubbo:service> 或 <dubbo:provider> 或 <dubbo:reference> 或 <dubbo: consumer> 的子標簽,用於配置自定義參數,該配置項將作為擴展點設置自定義參數使用

<dubbo:protocol name="napoli">              
    <dubbo:parameter key="http://10.20.160.198/wiki/display/dubbo/napoli.queue.name" value="xxx" />
</dubbo:protocol>
  • 1
  • 2
  • 3
               
屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
key key string 必填   服務治理 路由參數鍵 2.0.0以上版本
value value string 必填   服務治理 路由參數值 2.0.0以上版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM