2010-03-08 6 views
14

LWN 기사 "Crash-only software"을 좋아하며 충돌 안전 및 내결함성 프로그래밍에 대해 자세히 알고 싶습니다.충돌 안전 및 결함 허용 프로그래밍에 대한 리소스

놀랍게도 영구 상태가 오류 상황에서 일관성을 유지하는지 확인하는 것은 어렵습니다. 여기에서는 분산 작업에 대해서도 언급하지 않습니다. 단일 노드에서는 어렵습니다. 시스템이 충돌하면 일반 Berkeley DB (BDB Data Store 또는 BDB Concurrent Data Store)조차도 데이터베이스가 손상 될 수 있습니다. 높은 수준의 응용 프로그램 제약 조건이 깨졌을뿐만 아니라 시스템이 충돌 할 경우 데이터베이스가 제대로 열리지 않을 수 있습니다.

크래시 안전 및 내결함성 디자인, 접근 방식 및 프로그래밍에 대한 유용한 리소스는 무엇입니까?

리소스가 C++ 및 POSIX 환경에 초점을 맞추는 경우 감사하게 생각합니다.

+1

는 사이드 참고 : 최신 맥 OS X (스노우 레오파드) 운영 체제에서 단지 SIGKILL을 전송 '깨끗한'상태에있는 모든 응용 프로그램에 적용됩니다. 인상적인이 결과가 실제로 1 초간 종료되는 결과를 낳았습니다 (새 컴퓨터에서는 인정해야 함). 참조 : http://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW22 – ChristopheD

답변

2

Erlang과 Scala 언어의 Aktor 모델은 충돌 모델이됩니다. 이 article을 참조하십시오.

5

Akka는 let-it-crash를 염두에두고 작성된 Java 및 Scala 용 프레임 워크입니다. 액터 및 let-it-crash에 대한 소개는 articlethis 프레젠테이션을 참조하십시오. Fail-Fastworker/supervisor 스타일이라고도합니다. 얼랑에

두 좋은 프레젠테이션 나는 또한 또한 부스트에 뭔가가 있다고 생각, Systems that Never Stop (and Erlang)Message Passing Concurrency in Erlang

Theron는 C++에 대한 배우 라이브러리입니다.

또한 Erlang은 C 또는 C++ code을 호출하여 토론 할 수 있습니다. Java/Scala/Akka는 C++ 코드를 호출 할 수도 있습니다.

은 (당신이 C를 좋아한다면 ++ 난 ++은 C에서 오는 경우가 자바보다 스칼라 봐, 아주 좋은 언어와 더 나은을하는 것이 좋습니다.)

는 또한 조나스 Boners 프리젠 테이션 Scalability, Availability & Stability Patterns이 주제에 대한 좋은 표현이다.

+3

자바 (또는 스칼라)가 C++ DLL을 사용하면 JVM의 안정성이 위협받을 수 있습니다. C++ 코드는 JVM과 동일한 프로세스에서 실행되기 때문에 C++ 코드에서 충돌이 발생하면 JVM이 종료됩니다. JNI는 잘 작동하지 않으므로 사용하지 마십시오. –

+0

복잡성을 이해하면 JNI/JNA가 훌륭하게 작동합니다.seg faulted라고 불리는 C 코드가 JNI의 잘못이 아니기 때문에 JVM을 크래쉬한다. –

0

위의 답변 세트에 추가하려면 GroovyGPars이 누락되었습니다. 물론 이것은 C++가 아닙니다.

C++에는 libcppa이라는 또 다른 실험 라이브러리가 있습니다. Theron은 이것보다 성숙합니다.

가장 좋은 건 사용하는 것입니다 어떤 방법 중 하나

  1. 얼랑
  2. 스칼라/Akka는
+0

Theron이 스칼라와 같은 원격 액터를 지원하는지 알고 있습니까? – Giorgio

+0

Theron은 원격 액터를 지원하지 않지만 [libcppa does] (http://neverlord.github.com/libcppa/manual/index_0_3_3.html#htoc47). – neverlord

관련 문제