현재 프로젝트 : TCP/IP를 통해 건강 관련 데이터가 넘쳐 흐르는 원격 서버에 연결하고 있습니다. 받은 바이트 스트림은 개체로 구문 분석되고 개체는 SQL Server 데이터베이스에 저장됩니다. 데이터베이스의 클라이언트는 거의 실시간으로 데이터를 볼 것으로 예상됩니다.C#의 높은 철저한 스트리밍 데이터 응용 프로그램을위한 아키텍처?
문제는 응용 프로그램이 원격 서버의 최대 출력을 따라갈 수 없다는 것입니다. 우리는 애플리케이션을 프로파일 링 했으므로 아무런 방법도 압도적으로 느려지지 않습니다.
나는이 문제가 적어도 몇 번 이상 해결되었다고 가정하고 있습니다. 누구든지이 문제와 관련하여 제안, 요령 또는 참조를 갖고 있습니까?
귀하의 의견에 감사드립니다, chrispr. 지금 우리는 SqlBulkCopy를 사용하고 있습니다. 또한 대기열 수가 미리 정의 된 값보다 클 경우 데이터 항목을 대기열에 저장하고 저장합니다. 데이터베이스 구조 자체는 꽤 간단합니다. 우리는 실제로 어떤 종류의 ID 필드도 사용하지 않으며 데이터베이스를 데이터 덤핑 지로 간주하여 관계를 강화하는 대신이를 사용합니다. –
응용 프로그램이이를 따라 잡을 수 없다고 말할 때 병목은 어디에 있습니까? CPU 인 경우 대부분의 리소스를 사용하는 영역을 찾으십시오. 구문 분석하는 경우 각 레코드에 대해 새 개체를 만드는 것이 아니라 들어오는 데이터를 구문 분석하는보다 효율적인 방법이 있습니다. 또한 스레딩을 염두에 두십시오. 초당 수천을받는 경우 새 객체에 대한 이벤트를 발생시키는 경우에도 응용 프로그램에 큰 손실을 줄 수 있습니다. – chrispr