From e68118d32621b09fd5b754319467394e07ee2d32 Mon Sep 17 00:00:00 2001 From: ramilani12 Date: Sun, 10 Mar 2024 21:24:05 -0300 Subject: [PATCH 1/5] Participacao Raphael Milani --- participantes/raphael_milani/Dockerfile | 4 + participantes/raphael_milani/README.md | 16 ++++ .../raphael_milani/docker-compose.yml | 90 +++++++++++++++++++ participantes/raphael_milani/nginx/nginx.conf | 25 ++++++ participantes/raphael_milani/sql/init.sql | 65 ++++++++++++++ .../raphael_milani/sql/postgres.conf | 24 +++++ 6 files changed, 224 insertions(+) create mode 100644 participantes/raphael_milani/Dockerfile create mode 100644 participantes/raphael_milani/README.md create mode 100644 participantes/raphael_milani/docker-compose.yml create mode 100644 participantes/raphael_milani/nginx/nginx.conf create mode 100644 participantes/raphael_milani/sql/init.sql create mode 100644 participantes/raphael_milani/sql/postgres.conf diff --git a/participantes/raphael_milani/Dockerfile b/participantes/raphael_milani/Dockerfile new file mode 100644 index 000000000..3884ea7be --- /dev/null +++ b/participantes/raphael_milani/Dockerfile @@ -0,0 +1,4 @@ +FROM openjdk:17-oracle +ARG JAR_FILE=*.jar +COPY ${JAR_FILE} application.jar +ENTRYPOINT ["java", "-jar", "application.jar"] \ No newline at end of file diff --git a/participantes/raphael_milani/README.md b/participantes/raphael_milani/README.md new file mode 100644 index 000000000..527cae7a6 --- /dev/null +++ b/participantes/raphael_milani/README.md @@ -0,0 +1,16 @@ + +# Solução Rinha Backend 2014 - Q1 - Account Balance + +Solução controle de concorrência de créditos e débitos usando Pessimistic Locking, tecnologias usadas: + +## Tecnologias: + +- Java - 17 +- Nginx +- Postgres +- Spring Boot + +# Repositório API: + +- https://github.com/ramilani12/rinhabackend2024q1-balance-account + diff --git a/participantes/raphael_milani/docker-compose.yml b/participantes/raphael_milani/docker-compose.yml new file mode 100644 index 000000000..febf52660 --- /dev/null +++ b/participantes/raphael_milani/docker-compose.yml @@ -0,0 +1,90 @@ +version: '3.9' +name: 'rinha-de-backend-2024' + +services: + api01: &api + image: 'ramilani12/transacao:latest' + hostname: api01 + build: + context: . + container_name: api01 + restart: on-failure + depends_on: + - db + environment: + - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/rinhabackend2024 + - SPRING_DATASOURCE_USERNAME=postgres + - SPRING_DATASOURCE_PASSWORD=1234 + - SPRING_JPA_HIBERNATE_DDL_AUTO=none + - SPRING.DATASOURCE.HIKARI.CONNECTION-TEST-QUERY=SELECT 1 + - SPRING.DATASOURCE.HIKARI.MAXIMUM-POOL-SIZE=10 + - SPRING.DATASOURCE.HIKARI.MINIMUM-IDLE=5 + networks: + - network-rinhabackend + ports: + - '8081:8080' + deploy: + resources: + limits: + cpus: '0.4' + memory: '190MB' + api02: + <<: *api + hostname: api02 + container_name: api02 + ports: + - '8082:8080' + + nginx: + image: nginx:latest + container_name: nginx + restart: on-failure + hostname: api + volumes: + - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro + depends_on: + - api01 + - api02 + ports: + - "9999:9999" + deploy: + resources: + limits: + cpus: '0.1' + memory: '10MB' + networks: + - network-rinhabackend + + db: + image: 'postgres:latest' + container_name: db + hostname: db + restart: always + environment: + - POSTGRES_DB=rinhabackend2024 + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=1234 + ports: + - '5438:5432' + volumes: + - ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql + - ./sql/postgres.conf:/docker-entrypoint-initdb.d/postgres.conf + networks: + - network-rinhabackend + deploy: + resources: + limits: + cpus: '0.5' + memory: '160MB' + command: postgres -c config_file=/docker-entrypoint-initdb.d/postgres.conf + healthcheck: + test: [ 'CMD', 'pg_isready' ] + interval: 10s + timeout: 5s + retries: 5 +volumes: + rinhabackend_db_volume: + +networks: + network-rinhabackend: + driver: bridge \ No newline at end of file diff --git a/participantes/raphael_milani/nginx/nginx.conf b/participantes/raphael_milani/nginx/nginx.conf new file mode 100644 index 000000000..2b7f47e79 --- /dev/null +++ b/participantes/raphael_milani/nginx/nginx.conf @@ -0,0 +1,25 @@ +events { + worker_connections 300; +} + +http { + access_log off; + + upstream api { + server api01:8080; + server api02:8080; + keepalive 20; + } + + server { + http2 on; + gzip on; + listen 9999; + + location / { + proxy_read_timeout 300; + proxy_connect_timeout 300; + proxy_pass http://api; + } + } +} \ No newline at end of file diff --git a/participantes/raphael_milani/sql/init.sql b/participantes/raphael_milani/sql/init.sql new file mode 100644 index 000000000..49da98c22 --- /dev/null +++ b/participantes/raphael_milani/sql/init.sql @@ -0,0 +1,65 @@ +--create database rinhabackend2024; + +CREATE EXTENSION IF NOT EXISTS pg_trgm; + +CREATE SEQUENCE cliente_seq + INCREMENT BY 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1 + NO CYCLE; + + +CREATE SEQUENCE transacao_seq + INCREMENT BY 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1 + NO CYCLE; + + +CREATE UNLOGGED TABLE IF NOT EXISTS cliente ( + id int8 NOT NULL, + limite int8 NULL, + saldo int8 NULL, + version int8 NULL, + CONSTRAINT cliente_pkey PRIMARY KEY (id) +); + + +create index cliente_id_idx on cliente (id); + + +CREATE UNLOGGED TABLE IF NOT EXISTS transacao ( + id int8 NOT NULL, + descricao varchar(255) NULL, + realizada_em timestamp(6) NULL, + tipo_transacao varchar(255) NULL, + valor int8 NULL, + id_cliente int8 NOT NULL +); + +ALTER TABLE transacao ADD CONSTRAINT transacao_pkey PRIMARY KEY (id); + +ALTER TABLE transacao ADD CONSTRAINT fk_cliente FOREIGN KEY (id_cliente) REFERENCES cliente(id); + +CREATE INDEX CONCURRENTLY ON transacao (id_cliente, realizada_em); + + +INSERT INTO public.cliente +(id, limite, saldo ,version) +VALUES(nextval('cliente_seq'), 100000, 0,1); +INSERT INTO public.cliente +(id, limite, saldo ,version) +VALUES(nextval('cliente_seq'), 80000, 0,1); +INSERT INTO public.cliente +(id, limite, saldo ,version) +VALUES(nextval('cliente_seq'), 1000000, 0,1); +INSERT INTO public.cliente +(id, limite, saldo ,version) +VALUES(nextval('cliente_seq'), 10000000, 0,1); +INSERT INTO public.cliente +(id, limite, saldo,version) +VALUES(nextval('cliente_seq'), 500000, 0,1); diff --git a/participantes/raphael_milani/sql/postgres.conf b/participantes/raphael_milani/sql/postgres.conf new file mode 100644 index 000000000..38edb6d2a --- /dev/null +++ b/participantes/raphael_milani/sql/postgres.conf @@ -0,0 +1,24 @@ +listen_addresses = '*' +max_connections = 100 +superuser_reserved_connections = 3 +unix_socket_directories = '/var/run/postgresql' +shared_buffers = 200MB +work_mem = 4MB +maintenance_work_mem = 256MB +effective_cache_size = 200MB +wal_buffers = 128MB +checkpoint_completion_target = 0.9 +random_page_cost = 2.0 +effective_io_concurrency = 3 +autovacuum = on +log_statement = 'none' +log_duration = off +log_lock_waits = off +log_error_verbosity = terse +log_min_messages = panic +log_min_error_statement = panic +max_wal_size=8GB +checkpoint_timeout=500 + +synchronous_commit=off +fsync=off \ No newline at end of file From aeb05f5701f587f5e69e19ec26e2dc191cab29e9 Mon Sep 17 00:00:00 2001 From: Francisco Zanfranceschi Date: Sun, 10 Mar 2024 21:48:28 -0300 Subject: [PATCH 2/5] Delete participantes/raphael_milani/Dockerfile --- participantes/raphael_milani/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 participantes/raphael_milani/Dockerfile diff --git a/participantes/raphael_milani/Dockerfile b/participantes/raphael_milani/Dockerfile deleted file mode 100644 index 3884ea7be..000000000 --- a/participantes/raphael_milani/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM openjdk:17-oracle -ARG JAR_FILE=*.jar -COPY ${JAR_FILE} application.jar -ENTRYPOINT ["java", "-jar", "application.jar"] \ No newline at end of file From 2b09fc88ae4ef57c1cfe69db3eec785bda276552 Mon Sep 17 00:00:00 2001 From: rmilani Date: Mon, 11 Mar 2024 12:02:14 -0300 Subject: [PATCH 3/5] Ajustes nginx 0.4 vcpus e banco de dados 0.3vcpus --- participantes/raphael_milani/docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/participantes/raphael_milani/docker-compose.yml b/participantes/raphael_milani/docker-compose.yml index febf52660..ee9a822ba 100644 --- a/participantes/raphael_milani/docker-compose.yml +++ b/participantes/raphael_milani/docker-compose.yml @@ -50,7 +50,7 @@ services: deploy: resources: limits: - cpus: '0.1' + cpus: '0.4' memory: '10MB' networks: - network-rinhabackend @@ -74,7 +74,7 @@ services: deploy: resources: limits: - cpus: '0.5' + cpus: '0.3' memory: '160MB' command: postgres -c config_file=/docker-entrypoint-initdb.d/postgres.conf healthcheck: @@ -87,4 +87,4 @@ volumes: networks: network-rinhabackend: - driver: bridge \ No newline at end of file + driver: bridge From 546ea018c68b78e7c084128db715ddd0cac0e650 Mon Sep 17 00:00:00 2001 From: ramilani12 Date: Tue, 12 Mar 2024 09:57:40 -0300 Subject: [PATCH 4/5] Nova rodada de testes --- .DS_Store | Bin 0 -> 10244 bytes load-test/.DS_Store | Bin 0 -> 6148 bytes load-test/user-files/.DS_Store | Bin 0 -> 6148 bytes participantes/.DS_Store | Bin 0 -> 53252 bytes participantes/raphael_milani/.DS_Store | Bin 0 -> 6148 bytes participantes/raphael_milani/README.md | 6 +++++- participantes/raphael_milani/docker-compose.yml | 2 +- participantes/raphael_milani/nginx/nginx.conf | 2 +- participantes/raphael_milani/testada | 2 -- 9 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 .DS_Store create mode 100644 load-test/.DS_Store create mode 100644 load-test/user-files/.DS_Store create mode 100644 participantes/.DS_Store create mode 100644 participantes/raphael_milani/.DS_Store delete mode 100644 participantes/raphael_milani/testada diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b4d8c460eed5a7686d5fb2d6a38b29f85eafd0a2 GIT binary patch literal 10244 zcmeHM&u<$=6n>KgV#iIhY2yAuNEW_;ngqL)1PP%!b}ERVO~|GpQCrM{z?& z{Ad)(cewBez?~Ck#Eladj&MW#32^NRzL{OO_S!TpAZXEyH1pof&i8iqo0&I$Vo&^SQ zX3LbyL{gWU0nLDB;2{IjKje_5EXA@NN##0Fs1N{h1kEZzM;xFqxmcEB*^Z=w!e$gb zuo%kX5Q9Z9phyTY!yq6UQAWQ)jizpDg|XpEM+tZb7596tqf5%v#}ZE8_S zmbyI%Q4dh#xJi(2w$bil6iu`i6ZXDNjN!sl*b8W<*BW~{VeLG=+QLX&e2WKtR*mWq z1kK26vfr4MMCDs+Qx$ujZg2Z`Qk_2m}kC3+|L=tT@QPDj)Zf@VBl z-_)9}6NH7rPi$y-YlkH4$ROBTS3|K@5tJ^5N@rbTeS^`A5@L$its|q z@wl%5PMxF6-H#lvE)L3~<<$d)HKPZqbShmnE*&3VePezmSG>A#GLt(l7U$oZ$t_$f zoSdXn+5GEouT^*5Jx@rQkXY>1X*{YwEI)%bfQ)_9_gvvg5+rg2*G!A_9$Bc63H z(Q!)1vfJW!8opCEo0jc(jm?lB zhNg3$SB-Otu4}yh@uQ~oqbB-HKWb3s-t{^6l)aVh?SO}yUHVqlm8 z*4+Rrd^zNM%igxY8~3rgSDNxsu)+NRvJbPlW%<74HF){xo@>>(yW*8a7>d13#}-~R z@(E=Y)m5KMllkkvVf7&8OYe7-S0lxse5A;S-@T^v)O4pQmTcV<9#7{>t5HK5KaH-y z-QJ`Pxaj-zIekH2(YN$H{Y<~o12)PG_6obguCaI6b@m?nkgYMB?J$S=k%6Jk?vf6! zE3p8T$4q--m!)Y9?rRZl{wCxc_FTPpzo{eP%bp`ay2${}-Ni1G?hHpt0wZ1cshI!E z9vf5VMuLz8&1cD^RS;aEb(E$mZ(-^O5Ux(FZt@J(e-W75&}O?Vm;>?B{dVIsn5-kX zL>t%!9OU4$O`cZWC{%UQ3}^;41DXNNfM(!1VPH5KXD$PIn8DxtvsaS4+vUNa;4H0f?4Q&hqQ_W0 z>*<5Q4_4cP#UZ?4FjkN!uN_A!zQge$cgSI61y})AV9FG*+n6&yW%K6gvI4BY&nrOt zgG48EEv5$b)`5*K0T6T8tqo)PT_ldQ=vqt-;s}~BR767+w!{#Ij{VZ+xfWA{h7Q6O zAHqIa*a}7Hr{n#lP6y!{glwI5oM&i|vy^}kNyh8181{-**WSMzFBd^dZx zj=UwEwG#aros9BQgP#-(^ihntbQCY6Yr}p?0itU$HHbZE{3D=c;D#0WRRul(&i7ju literal 0 HcmV?d00001 diff --git a/load-test/user-files/.DS_Store b/load-test/user-files/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c7212b6f479216b97d6968f707044897fc25439f GIT binary patch literal 6148 zcmeHK!A{#i5SE&9jNRx zGAgNfmzmE=wiGRnRb+twU4zCnqJk#$=>M4nBfKn*pf7(}fwdH!OpBW&v(Z13n=CEL zZud^r*6QmUji3>K=Ad7~h~=Yr2Wka= X%?2>^SUH3TA{PNmgEYdxUuEDP%eH8M literal 0 HcmV?d00001 diff --git a/participantes/.DS_Store b/participantes/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..56c7d80ecb674c1820322e785d4746d4b8a940ab GIT binary patch literal 53252 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 literal 0 HcmV?d00001 diff --git a/participantes/raphael_milani/.DS_Store b/participantes/raphael_milani/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..603d5c456657e1e37aa342c735da19a52c8b0a7b GIT binary patch literal 6148 zcmeHK!EO^V5FIxu*|b86C`j~xWU1E>5=2`hE=x!c9Jq9=asU*v*{H0#U8mWEfTBoy zhkxmrAK_m(!5iC^k_{0zgs4Xvzwvm+8^4XmYa$ZuNz@{$5s?RFEN`Ltjqo_@ifmX< z1t|0!0~*mo>XV|2m1yU13^)eYiOtd9(*+0g#3Z{aYBvvITeU2K%f zo3|=n#oPAY1s~Kj8284Ltlb;E;ogZ-NqBAd!qa##?bhzTQ0cfAr-PABh@$~Q-oB30 zNKM;nl17=%4a|U7^{U<4?riqBd03aN{eyX3&RVU5r*(Pwq&c5gy?c9)o*j43lZ#Y+ zVTMp8Q6{zAws;L+VJs~EV=zh+m7c-N8C5!_BM{!9SHK2{j0*Jd{EIK6gjaW2q+9$b zM4{{C<}zUajNbOmrNFJ+G2j?j!vNO@31##x<_2}?K%=h!z%txgVDrZT=SYjb#oQo9 zAi|^qO{%b03}MpYmp0C~m>V?dB<$rw*e45nLlOGvm|yB}623v#ItCmA%M6rEx5nrH z(fa%Ua+2#g1{?$b6$7H&2|8^o$)2q%i{rCaLf=DKI4(D+Q_$GsSQ~s4--l|!m}CR! VTg(l@192Y$ng-W62L37ozW{RZkQV>| literal 0 HcmV?d00001 diff --git a/participantes/raphael_milani/README.md b/participantes/raphael_milani/README.md index 527cae7a6..f142d5a34 100644 --- a/participantes/raphael_milani/README.md +++ b/participantes/raphael_milani/README.md @@ -12,5 +12,9 @@ Solução controle de concorrência de créditos e débitos usando Pessimistic L # Repositório API: -- https://github.com/ramilani12/rinhabackend2024q1-balance-account +- https://github.com/ramilani12/rinhabackend2024q1-balance-account + +# Contato + +- Twitter(X): https://twitter.com/ramilani12 diff --git a/participantes/raphael_milani/docker-compose.yml b/participantes/raphael_milani/docker-compose.yml index ee9a822ba..53cdeb10a 100644 --- a/participantes/raphael_milani/docker-compose.yml +++ b/participantes/raphael_milani/docker-compose.yml @@ -87,4 +87,4 @@ volumes: networks: network-rinhabackend: - driver: bridge + driver: bridge \ No newline at end of file diff --git a/participantes/raphael_milani/nginx/nginx.conf b/participantes/raphael_milani/nginx/nginx.conf index 2b7f47e79..39c38e6b4 100644 --- a/participantes/raphael_milani/nginx/nginx.conf +++ b/participantes/raphael_milani/nginx/nginx.conf @@ -1,5 +1,5 @@ events { - worker_connections 300; + worker_connections 400; } http { diff --git a/participantes/raphael_milani/testada b/participantes/raphael_milani/testada deleted file mode 100644 index d462a04f6..000000000 --- a/participantes/raphael_milani/testada +++ /dev/null @@ -1,2 +0,0 @@ -testada em Mon Mar 11 02:34:30 UTC 2024 -abra um PR removendo esse arquivo caso queira que sua API seja testada novamente From 723758802b3050ee800ccf53d7ab84f5198a4d67 Mon Sep 17 00:00:00 2001 From: ramilani12 Date: Tue, 12 Mar 2024 09:59:08 -0300 Subject: [PATCH 5/5] Retirado arquivos do mac --- .DS_Store | Bin 10244 -> 0 bytes participantes/raphael_milani/.DS_Store | Bin 6148 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 participantes/raphael_milani/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index b4d8c460eed5a7686d5fb2d6a38b29f85eafd0a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHM&u<$=6n>KgV#iIhY2yAuNEW_;ngqL)1PP%!b}ERVO~|GpQCrM{z?& z{Ad)(cewBez?~Ck#Eladj&MW#32^NRzL{OO_S!TpAZXEyH1pof&i8iqo0&I$Vo&^SQ zX3LbyL{gWU0nLDB;2{IjKje_5EXA@NN##0Fs1N{h1kEZzM;xFqxmcEB*^Z=w!e$gb zuo%kX5Q9Z9phyTY!yq6UQAWQ)jizpDg|XpEM+tZb7596tqf5%v#}ZE8_S zmbyI%Q4dh#xJi(2w$bil6iu`i6ZXDNjN!sl*b8W<*BW~{VeLG=+QLX&e2WKtR*mWq z1kK26vfr4MMCDs+Qx$ujZg2Z`Qk_2m}kC3+|L=tT@QPDj)Zf@VBl z-_)9}6NH7rPi$y-YlkH4$ROBTS3|K@5tJ^5N@rbTeS^`A5@L$its|q z@wl%5PMxF6-H#lvE)L3~<<$d)HKPZqbShmnE*&3VePezmSG>A#GLt(l7U$oZ$t_$f zoSdXn+5GEouT^*5Jx@rQkXY>1X*{YwEI)%bfQ)_9_gvvg5+rg2*G!A_9$Bc63H z(Q!)1vfJW!8opCEo0jc(jm?lB zhNg3$SB-Otu4}yh@uQ~oqbB-HKWb3s-t{^6l)aVh?SO}yUHVqlm8 z*4+Rrd^zNM%igxY8~3rgSDNxsu)+NRvJbPlW%<74HF){xo@>>(yW*8a7>d13#}-~R z@(E=Y)m5KMllkkvVf7&8OYe7-S0lxse5A;S-@T^v)O4pQmTcV<9#7{>t5HK5KaH-y z-QJ`Pxaj-zIekH2(YN$H{Y<~o12)PG_6obguCaI6b@m?nkgYMB?J$S=k%6Jk?vf6! zE3p8T$4q--m!)Y9?rRZl{wCxc_FTPpzo{eP%bp`ay2${}-Ni1G?hHpt0wZ1cshI!E z9vf5VMuLz8&1cD^RS;aEb(E$mZ(-^O5Ux(FZt@J(e-W75&}O?Vm;>?B{dVIsn5-kX zL>t%!9OU4$O`cZWC{%UQ3}^;41DXNNfM(!1VPH5KXD$PI5=2`hE=x!c9Jq9=asU*v*{H0#U8mWEfTBoy zhkxmrAK_m(!5iC^k_{0zgs4Xvzwvm+8^4XmYa$ZuNz@{$5s?RFEN`Ltjqo_@ifmX< z1t|0!0~*mo>XV|2m1yU13^)eYiOtd9(*+0g#3Z{aYBvvITeU2K%f zo3|=n#oPAY1s~Kj8284Ltlb;E;ogZ-NqBAd!qa##?bhzTQ0cfAr-PABh@$~Q-oB30 zNKM;nl17=%4a|U7^{U<4?riqBd03aN{eyX3&RVU5r*(Pwq&c5gy?c9)o*j43lZ#Y+ zVTMp8Q6{zAws;L+VJs~EV=zh+m7c-N8C5!_BM{!9SHK2{j0*Jd{EIK6gjaW2q+9$b zM4{{C<}zUajNbOmrNFJ+G2j?j!vNO@31##x<_2}?K%=h!z%txgVDrZT=SYjb#oQo9 zAi|^qO{%b03}MpYmp0C~m>V?dB<$rw*e45nLlOGvm|yB}623v#ItCmA%M6rEx5nrH z(fa%Ua+2#g1{?$b6$7H&2|8^o$)2q%i{rCaLf=DKI4(D+Q_$GsSQ~s4--l|!m}CR! VTg(l@192Y$ng-W62L37ozW{RZkQV>|