There's another point to improve:
if  *syncPartitions=N* comes as the configurable in run-time it will allow
to manage the consistency-performance balance runtime, e.g. switch to full
async for preloading and then go to back to full sync for regular operations


On Thu, Apr 25, 2019 at 6:48 PM Sergey Kozlov <skoz...@gridgain.com> wrote:

> Vyacheskav,
>
> You're right with the referring to MongoDB doc. In general the idea is
> very similar. Many vendors use such approach (1).
>
> [1]
> https://dev.mysql.com/doc/refman/8.0/en/replication-options-master.html#sysvar_rpl_semi_sync_master_wait_for_slave_count
>
>
>
>
>
>
>
>
> On Thu, Apr 25, 2019 at 6:40 PM Vyacheslav Daradur <daradu...@gmail.com>
> wrote:
>
>> Hi, Sergey,
>>
>> Makes sense to me in case of performance issues, but may lead to losing
>> data.
>>
>> >> *by the new option *syncPartitions=N* (not best name just for
>> referring)
>>
>> Seems similar to "Write Concern"[1] in MongoDB. It is used in the same
>> way as you described.
>>
>> On the other hand, if you have such issues it should be investigated
>> first: why it causes performance drops: network issues etc.
>>
>> [1] https://docs.mongodb.com/manual/reference/write-concern/
>>
>> On Thu, Apr 25, 2019 at 6:24 PM Sergey Kozlov <skoz...@gridgain.com>
>> wrote:
>> >
>> > Ilya
>> >
>> > See comments inline.
>> > On Thu, Apr 25, 2019 at 5:11 PM Ilya Kasnacheev <
>> ilya.kasnach...@gmail.com>
>> > wrote:
>> >
>> > > Hello!
>> > >
>> > > When you have 2 backups and N = 1, how will conflicts be resolved?
>> > >
>> >
>> > > Imagine that you had N = 1, and primary node failed immediately after
>> > > operation. Now you have one backup that was updated synchronously and
>> one
>> > > which did not. Will they stay unsynced, or is there any mechanism of
>> > > re-syncing?
>> > >
>> >
>> > Same way as Ignite processes the failures for PRIMARY_SYNC.
>> >
>> >
>> > >
>> > > Why would one want to "update for 1 primary and 1 backup
>> synchronously,
>> > > update the rest of backup partitions asynchronously"? What's the use
>> case?
>> > >
>> >
>> > The case to have more backups but do not pay the performance penalty for
>> > that :)
>> > For the distributed systems one backup looks like risky. But more
>> backups
>> > directly impacts to performance.
>> > Other point is to split the strict consistent apps like bank apps and
>> the
>> > other apps like fraud detection, analytics, reports and so on.
>> > In that case you can configure partitions distribution by a custom
>> affinity
>> > and have following:
>> >  - first set of nodes for critical (from consistency point) operations
>> >  - second set of nodes have async backup partitions only for other
>> > operations (reports, analytics)
>> >
>> >
>> >
>> > >
>> > > Regards,
>> > > --
>> > > Ilya Kasnacheev
>> > >
>> > >
>> > > чт, 25 апр. 2019 г. в 16:55, Sergey Kozlov <skoz...@gridgain.com>:
>> > >
>> > > > Igniters
>> > > >
>> > > > I'm working with the wide range of cache configurations and found
>> (from
>> > > my
>> > > > standpoint) the interesting point for the discussion:
>> > > >
>> > > > Now we have following *writeSynchronizationMode *options:
>> > > >
>> > > >    1. *FULL_ASYNC*
>> > > >       -  primary partition updated asynchronously
>> > > >       -  backup partitions updated asynchronously
>> > > >    2. *PRIMARY_SYNC*
>> > > >       - primary partition updated synchronously
>> > > >       - backup partitions updated asynchronously
>> > > >    3. *FULL_SYNC*
>> > > >       - primary partition updated synchronously
>> > > >       - backup partitions updated synchronously
>> > > >
>> > > > The approach above is covering everything if you've 0 or 1 backup.
>> > > > But for 2 or more backups we can't reach the following case
>> (something
>> > > > between *PRIMARY_SYNC *and *FULL_SYNC*):
>> > > >  - update for 1 primary and 1 backup synchronously
>> > > >  - update the rest of backup partitions asynchronously
>> > > >
>> > > > The idea is to join all current modes into single one and replace
>> > > > *writeSynchronizationMode
>> > > > *by the new option *syncPartitions=N* (not best name just for
>> referring)
>> > > > covers the approach:
>> > > >
>> > > >    - N = 0 means *FULL_ASYNC*
>> > > >    - N = (backups+1) means *FULL_SYNC*
>> > > >    - 0 < N < (backups+1) means either *PRIMARY_SYNC *(N=1) or new
>> mode
>> > > >    described above
>> > > >
>> > > > IMO it will allow to make more flexible and consistent
>> configurations
>> > > >
>> > > > --
>> > > > Sergey Kozlov
>> > > > GridGain Systems
>> > > > www.gridgain.com
>> > > >
>> > >
>> >
>> >
>> > --
>> > Sergey Kozlov
>> > GridGain Systems
>> > www.gridgain.com
>>
>>
>>
>> --
>> Best Regards, Vyacheslav D.
>>
>
>
> --
> Sergey Kozlov
> GridGain Systems
> www.gridgain.com
>


-- 
Sergey Kozlov
GridGain Systems
www.gridgain.com

Reply via email to