La sincronización del vector es fácil si solo dejas que una clase tenga una referencia al Vector y el resto accedan a el sólo a través de metodos de esa clase, ya que así puedes controlar que el acceso sea sincronizado.
La arquitectura, pues eso lo sabras tu mejor que tienes todos los requerimientos
Suerte