게시글
질문&답변
snowflake 알고리즘 - synchronized 활용한 동시성 제어
질문 1: 멀티 서버 환경에서의 동시성 제어Snowflake 알고리즘에서 synchronized 키워드를 사용하여 동시성을 제어하는 것은 단일 서버 내에서의 문제를 해결합니다. 그러나 멀티 서버 환경에서는 각 서버가 독립적으로 ID를 생성하기 때문에, 서버 간의 동시성 문제는 발생하지 않습니다. 각 서버가 고유한 노드 ID를 가지고 있기 때문에, 동일한 시퀀스 번호가 사용되더라도 각 서버가 생성하는 ID는 고유합니다.질문 2: Redis와 같은 외부 미들웨어 사용멀티 서버 환경에서 각 서버가 고유한 노드 ID를 가지고 있으면, 기본적으로 Snowflake 알고리즘은 충돌 없이 동작합니다. 그러나 만약 노드 ID의 충돌이나 다른 이유로 인해 추가적인 동시성 제어가 필요하다면, Redis와 같은 외부 미들웨어를 사용하여 전역적인 시퀀스 번호를 관리할 수 있습니다. 예를 들어, Redis의 INCR 명령어를 사용하여 전역적으로 증가하는 시퀀스 번호를 관리할 수 있습니다.이 외부 미들웨어를 사용하면 다음과 같은 장점이 있습니다:• 중앙화된 관리: 모든 서버가 동일한 시퀀스 번호를 참조하므로, 노드 ID가 겹치더라도 ID 충돌을 방지할 수 있습니다.• 확장성: 서버가 추가되더라도 중앙화된 시퀀스 관리로 인해 쉽게 확장 가능합니다.멀티 서버 환경에서 노드 ID의 충돌 가능성을 최소화하려면 Redis와 같은 외부 미들웨어를 사용하는 것이 유리할 수 있습니다.
- 0
- 3
- 178
질문&답변
fake Repository로 테스트를 진행하려고 합니다,
public class InMemoryOriginalRepository implements OriginalRepository { private final Map entities = new HashMap(); private final AtomicLong idGenerator = new AtomicLong(1); @Override public BillingPay save(TestEntity entity) { long id = idGenerator.getAndIncrement(); setPrivateField(entity, "id", id); // 이친구는 리플렉션으로 처리 :) entities.put(id, entity); return entity; } private void setPrivateField(Object object, String fieldName, Object value) { try { Field field = object.getClass().getDeclaredField(fieldName); field.setAccessible(true); field.set(object, value); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } } 이유는 db 에 id 를 자동으로 증가시키는걸 위임해버렸기 때문이죵그래서 entity 에 setId 이럴땐 고수님들이 얘기하는 리플렉션을 조져주면됩니다
- 1
- 3
- 1.1K
질문&답변
props으로 가져온 반응형 변수 업데이트 이슈
Vue3 + Quasar + Firebase !!! 군침이 도네요 강사님 ... 화이팅입니다 !!!
- 0
- 2
- 2.1K
질문&답변
ListView.vue를 ts로 변경 후 에러가 발생합니다.
enum 은 강의를 사야하는군여 :)
- 1
- 2
- 571
질문&답변
장바구니 추가를 반복적으로 하다 보면 가끔 500에러가 발생합니다.
(사진)싹 이부분을 날려주시고 힌트는 (사진) 아래와 같았습니다 이미 한참지난부분 이나, 혹시나 같은 이슈 분들은 db.json cart 배열 비워보세용---- 장바구니에 담기전 조회후 이미 id 가 존재하면 방어해주는 코딩을 추가해주는것도 연습삼아 괜찮을것같아요
- 3
- 2
- 446
질문&답변
error 페이지
자문자답 입니다 . layouts 폴더 생성후 -> 똑같은 구조에 props 로 error 를 받게되면 status Code 를 받을수 있었군요 template> div> h1 v-if="error.statusCode === 404">Page not foundh1> h1 v-else>An error occurredh1> NuxtLink to="/">Home pageNuxtLink> div> template> script> export default { props: { error: { type: Object, default: () => {}, }, }, }; script>
- 2
- 5
- 859
질문&답변
Swagger 오류 시 pom.xml 설정방법
상반기가 끝났지만 그대로네용 ㅠㅠ
- 1
- 2
- 382
고민있어요
아... 감사합니다.
- 0
- 0
- 180
질문&답변
change 언급하실때
아 감사합니다 ㅎㅎ
- 4
- 3
- 311
질문&답변
@Valid 유효성 체크 시 질문 있습니다!
저도 비슷한 에러였습니다. model.addAttribute("form", new BookForm()); 여기서 그냥 form 으로 선언시 This application has no explicit mapping for /error, so you are seeing this as a fallback. result 를 로그로 찍어보니 Field error in object 'bookForm' on field 'name': rejected value []; codes [NotEmpty.bookForm.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty];------ 피셜인데. 타임리프 가 form 앞의 명시적으로 접두어를 붙여주지 않으면 자동으로 붙지만 model.attribute 에서도 자동으로 붙여주는 접두어를 타이핑 하지 않으면 못찾나 봅니다... "내가 form 이 왠지 bookForm 인거같아서 붙여주긴 했다만... 진짜 form이 bookForm 일까? " 하는 측면으로 생각해보고 bookForm 붙여주니 잘되니깐 진도상 그냥 넘기긴 했습니다 검증이 필요할것같지만 맞는것같아요
- 3
- 4
- 617