날짜별 글 목록: 2009년 6월 25일

리액터(Reactor) 패턴의 성능 향상 방안..

리액터(Reactor) 패턴을 사용해서 자바 네트워크 서버를 개발하다 보면, 동접을 2000 이상 붙여보면 성능저하를 확인할 수 있다. 그래서 리액터를 마스터-슬레이브(Master-Slave)의 구조로 개선하고, 슬레이브 리액터의 개수를 CPU 개수만큼 만들어서 성능을 개선할 수 있다. 아래는 이 구조를 쉽게 알수 있는 그림이다.^^

DI(Dependency Injection)에 대해서..

객체가 스스로 참조하는 객체를 생성하지 않고, 외부 환경(컨테이너)에서 삽입 되는 형태를 DI(Dependency Injection)라고 한다. 그리고, DI를 구현하는 방법은 2가지가 있다.

1. 생성자(Constructor) 방식

public class Shop {   
  private final StockManager stockManager;   
  private final String shopZipCode;   
  public Shop(StockManager stockManager, String shopZipCode) {   
       this.stockManager = stockManager;   
       this.shopZipCode = shopZipCode;   
  }   
}

2. 세터(Setter) 방식

public class Shop {   
  StockManager stockManager;   
  String shopZipCode;   
  /**  
  * @service name="StockManager"       
  */  
  public void setStockManager(StockManager stockManager) {   
      this.stockManager = stockManager;   
  }   
  /**  
  * @config name="shopZipCode"       
  */  
  public void setStockManager(String shopZipCode) {   
      this.shopZipCode= shopZipCode;   
  }   
  // TODO - Joe - how does setter injector do config ? Same way?   
  public void initialize() {   
      // all setXXXs are now done  
  }   
}